标题
[linux/c/c++] linux下怎样得到文件的大小 [zt]
clq
浏览(0) +
2008-04-22 20:31:47 发表
编辑
关键字:
linux下怎样得到文件的大小
1.SHELL
//得到已经使用的磁盘空间,以字节为单位
#ifdef _LINUX
sprintf(cmd, "cd %s;find . -name \"*.*\"|xargs ls -l|awk '{size+=$5}END{print size}'",
str_FilePath.c_str());
//sprintf(cmd, "du -s %s|awk '{print $1}'", str_FilePath.c_str());
#endif
if ((fp = popen(cmd, "r")) != NULL)
{
fgets(cmd, sizeof(cmd), fp);
}
else
{
LOG(NULL, 0, "SHELL ERROR:cd %s;find . -name \"*.*\"|xargs ls -l|awk '{size+=$5}END{print size}'");
cout <<"SHELL ERROR:cd %s;find . -name \"*.*\"|xargs ls -l|awk '{size+=$5}END{print size}'"< }
2.
unsigned long get_file_length( FILE* file_ptr )
{
unsigned long PosCur = 0;
unsigned long PosBegin = 0;
unsigned long PosEnd = 0;
if ( NULL == file_ptr )
{
return 0;
}
PosCur = ftell( file_ptr ); //得到文件指针的当前位置
fseek( file_ptr, 0L, SEEK_SET ); //将文件指针移到文件开始
PosBegin = ftell( file_ptr ); //得到当前文件的位置,也就是文件头的位置
fseek( file_ptr, 0L, SEEK_END ); //将文件指针移到文件末尾
PosEnd = ftell( file_ptr ); //得到文件的末尾位置
fseek( file_ptr, PosCur, SEEK_SET ); //将指针移到文件的原来位置
return PosEnd - PosBegin; //返回文件大小
}
3.
long
get_file_size( char * filename )
{
struct stat f_stat;
if( stat( filename, &f_stat ) == -1 ){
return -1;
}
return (long)f_stat.st_size;
}
下面是一个例子:
-----------------------------------------------------------------
#include
#include
#include
long
get_file_size( char * filename )
{
struct stat f_stat;
if( stat( filename, &f_stat ) == -1 ){
return -1;
}
return (long)f_stat.st_size;
}
int main(int argc, char *argv[])
{
if(argc == 1)
{
printf("%s size: %d\n", argv[0], get_file_size(argv[0]));
printf("usage: [%s] [filename]\n", argv[0]);
}
else
printf("%s size: %d", argv[1], get_file_size(argv[1]));
system("PAUSE");
return 0;
}
4.
利用函数filelength(int)很简单即可得到
#include
#include
int main(int argc, char *argv[])
{
int nFp = open("./test.txt", O_RDONLY);
int len = filelength(nFp);
/*
//或者
FILE* fp;
fp = fopen("./test.txt", "r");
int nFp = fileno(fp);//将文件描述符转为句柄
int len = filelength(nFp);
*/
}
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.