C++中怎样获取一个文件的大小,怎样判断一个文件是不是为空(文件存在,但是没有内容)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中怎样获取一个文件的大小,怎样判断一个文件是不是为空(文件存在,但是没有内容)相关的知识,希望对你有一定的参考价值。

用C语言的风格:FILE *fp = fopen("","");
fseek(SEEK_END);//跳到文件尾
int lenth = ftell(fp);//获得文件内部指针位置
lenth就是当前文件大小,如果lenth == -1,则文件为空
参考技术A #include <windows.h>

void main(void)
TCHAR szFileName[MAX_PATH]=TEXT("test.txt");
HANDLE hFile=CreateFile(szFileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if (INVALID_HANDLE_VALUE==hFile)
if (0==GetLastError())
printf("file not exist");

return;

DWORD dwFileSize=GetFileSize(hFile,NULL);
CloseHandle(hFile);

Linux怎样计算一个目录下一部分文件的总大小

例如:匹配*20130606*的文件大小怎样计算?
用du -sk *20130606* 命令返回Argument list too long

1、首先我们要知道怎么查看目录下文件,ls 这个命令就可以;但是在虚拟机中无法直接通过 ls 这个命令直接看出 文件 是 目录还是 问价(linux 的文件 系统划分 需要掌握)。

2、我们就需要 ls 的拓展命令 ls-l (可以直接用 ll 这样的简化命令,更多的可以自己查相关资料,命令的相关资料太多了...);这里我们就可直接看出 文件 的类型; 标出的信息开头 ‘-’就是 文件命令中用 f 表示; ‘d’就是目录,命令中就用‘d’表示。

3、然后我们开始进行如何统计;find 这个命令可以查找文件;通过 find  /tmp/  -name 文件名,找出来。

4、然后我们通过扩展 命令 :find -type f(找出 文件类型是 f 的文件)我们可以看出 这个命令效果。

5、然后我们 通过 wc -l 这个命名进行统计;但两个命令需要一起使用, 这个时候通过管道符 “ | ”链接;命令就是:find -type f |wc -l;我们就可以实现 统计文件个数。

6、同理如果想要统计 目录 ,使用如图命令:find -type d|wc -l;默认会统计 隐藏的 文件或者 目录;所以显示的是 3。

7、隐藏文件或者目录是 ‘.’开头的,所以我们排除它,就可以只统计出显示的文件。

参考技术A 使用du 命令可以查看文件大小
du -h xxx 可以查看单个文件夹的大小
du -h xxx xxx xxx 可以分别查看多个文件的大小

du -h /xxxx 分别列出整个文件夹下 所有文件的大小
du -sh /xxxx 统计整个文件夹的大小
参考技术B Argument list too long 是因为*20130606*匹配到的文件数量太多了
可以使用管道
ls -l | grep 20130606 | awk 'c += $5ENDprint c/1024/1024 "MB"'
如果文件数量不那么多可以使用
du -m *20130606* | awk 'c+=$1ENDprint c'
这两个命令显示的单位是MB,如果要显示GB可以print c 的c再除以一个1024
参考技术C du -ch*20130606* 这个试试,再不行就du -kc*20130606* 之后最后一个行的sum值转换一下,再在不行就du+awk 参考技术D 不用这么麻烦,需要计算的文件放入到一个单独的目录,就可以直接计算了

以上是关于C++中怎样获取一个文件的大小,怎样判断一个文件是不是为空(文件存在,但是没有内容)的主要内容,如果未能解决你的问题,请参考以下文章

请问C++中两个字符串的大小是怎样比较的?

怎样判断一个字符是否汉字呢??

Linux怎样计算一个目录下一部分文件的总大小

C++里怎样判断字符串中含有汉字

问题一:java怎样限制导出的csv文件大小,csv文件导出里面行数大于5000条则分为多个csv文件。

C++文件读取中,怎样从文件中读取一种类型的数据