Linuxの下でファイルの長さのいくつかのよく使う方法を求めます
1110 ワード
ファイルIOのプログラミングの過程で、ファイルの長さをどのように求めるかという問題によく遭遇します.ここでは、仕事や教育で蓄積された一般的な方法を書いて皆さんと共有します.第一類:lseek/fseek 1、lseek
コードクリップ:
2、fseek+ftell:特にファイルポインタの位置に注意
コードクリップ
クラス2:stat、fstat関数ファミリー
関数のプロトタイプ:
int stat(char *filename,struct stat *s);
int fstat(int fd,struct stat *s);
コードクリップ:statを例にとると、fstatは最初のパラメータ用ファイル記述子にすぎません.
コードクリップ:
int GetFileSize(char *_pName)
{
int iFd = -1;
int iLen = 0;
if (_pName == NULL)
{
return -1;
}
iFd = open(_pName, O_RDONLY);
if (iFd >= 0)
{
iLen = lseek(iFd, 0, SEEK_END);
close(iFd);
return iLen;
}
return iFd;
}
2、fseek+ftell:特にファイルポインタの位置に注意
コードクリップ
long GetFileSize(char *_pName )
{
long length;
FILE *fp;
fp = fopen("_pName ",rw);
if(fp==NULL)
return -1;
fseek(fp, 0L, SEEK_END);
length = ftell(fp);
return length;
}
クラス2:stat、fstat関数ファミリー
関数のプロトタイプ:
int stat(char *filename,struct stat *s);
int fstat(int fd,struct stat *s);
コードクリップ:statを例にとると、fstatは最初のパラメータ用ファイル記述子にすぎません.
#include <unstd.h>
#include <sys/stat.h>
int GetFileLen( char *_pName )
{
struct stat st;
stat(_pName, &st);
return st.st_size;
}