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