linux下怎样得到文件的大小
2007-12-03 15:37
363 查看
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}'"<<endl;
}
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 <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
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 <io.h>
#include <fcntl.h>
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);
*/
}
//得到已经使用的磁盘空间,以字节为单位
#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}'"<<endl;
}
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 <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
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 <io.h>
#include <fcntl.h>
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);
*/
}
相关文章推荐
- linux c 得到文件大小
- linux 查看磁盘空间文件大小
- linux-2.基础-怎样实现linux和windows之间进行文件的传递
- linux下使用 du查看某个文件或目录占用磁盘空间的大小
- Linux查看文件夹内存大小命令,清理系统大文件
- 查LINUX某目录下的文件大小和数量(包含子文件夹)
- Linux文件大小排序
- Linux怎样新建一个511行的文件
- 得到 Linux, Unix 终端大小
- linux下C获取文件的大小 .
- Linux下查看文件和文件夹大小
- linux:快速得到某目录下代码大小
- Linux下查看文件和文件夹大小的df和du命令
- linux下如何生成任意大小的测试文件
- linux 查看文件的大小
- Linux 文件按大小排序
- Linux下获取文件大小的方法
- 转 查看linux文件目录的大小和文件夹包含的文件数
- linux下使用 du查看某个文件或目录占用磁盘空间的大小