ファイル、ディレクトリの操作に関連する機能

A. ファイル操作関数

1.stat機能

1.1 STATは、情報ファイルを記録します

 

 

16ビットのバイナリ数1.2 st_modeの、以下に示すように:

次の図は、決定された通常ファイルではない、様々な進ファイルの種類がファイルへのst_mode&017万ファイルタイプを取得する例を示します。

構造体のstat ST;

STAT( "123.txt"、&ST);

もし((st.st_mode&S_IFMT)== S_IFREG)

{

printfの(「これは、通常のファイルです」);

}

 

 

 タイプのファイルパーミッション1.3計算は次のとおりです。

 さらに、基準とすることができるます。https://blog.csdn.net/astrotycoon/article/details/8679676

 

2.lstat機能

3.chmod

4.chown

uidとgidは中のvi / etc / passwdファイルで見ることができます

 

5.truncate

6.link

7.rename

8.dup dup2の 

ファイルディスクリプタをコピーするには 

プロトタイプ:

最小1.dup oldfdがコピーファイルを利用できる記述子、およびリターン

プログラム例:RET書き込み従来A.TXTデータファイルによりファイル記述子fdができ、ファイルポインタは復元されません。

 

2.dup2はnewfdとしてコピーoldfdがします

サンプルプログラム:ファイル記述子fdの元「english.txt」コピーはFD1、すなわちA.TXTファイルディスクリプタで、A.TXTにデータを書き込みます

 

 

 

 

9.fcntl

ファイルのステータスを取得したときに、着信F_GETFL cmdを、引数= 0;

受信ファイルのステータスF_SETFLのCMD、引数=フラグ。

 

 

II。ディレクトリ操作関数

1.chdir和GETCWD 

2.mkdir和のrmdir 

3.opendir

 

4.readdir

//递归读取子目录并计算普通文件个数
#include<stdio.h> #include<stdlib.h> #include<dirent> int getFileNum(const char *filename) { DIR *dir=NULL; dir=opendir(filename); struct dirent* ptr=NULL; if(dir==NULL) { perror("opendir"); exit(1); } char path[1024]={0}; while((ptr=readdir(dir))!=null) { //过滤.和.. if(strcmp(ptr->d_name,".")==0||strcmp(ptr->d_name,"..")==0) { continue; } //如果是目录 if(ptr->d_type==DT_DIR) { sprintf(path,"%s%s",filename,ptr->d_name); //递归读目录 total+=getFileNum(path); } //如果是普通文件 if(ptr->d_type==DT_REG) { total++; } } closedir(dir); return total; } int main(int argc,char* argv[]) { int total=getFileNum(argv[1]); printf("%s has file numbers %d",argv[1],total); return 0; }

  

5.closedir

 

おすすめ

転載: www.cnblogs.com/sclu/p/11246003.html