c/c++ 文件相关操作

来源:互联网 发布:淘宝如何比价 编辑:程序博客网 时间:2024/06/05 02:10

打开文件(fopen函数):

包含头文件<stdio.h>即可。

使用比较简单方便,两个参数前者代表文件路径,后者代表打开方式('r'代表可读,'w'代表可写,‘b’代表二进制形式打开,'+'代表读写权限均有,可组合使用)。

如果打开失败,返回的文件指针为空。

只要含有'r'标志的打开方式,都会检测文件是否存在,若不存在则打开失败。如果是以'w'标志打开,当文件不存在时则进行新建。

当然还有ifstream和ofstream等方式。

FILE *pFile = fopen("c:\\test.txt", "rb+");if(pFile == NULL){return;}//....fclose(pFile);
判断文件状态(GetFileAttributes函数)是否存在,或者是文件还是目录:

包含头文件<windows.h>即可。

INVALID_FILE_ATTRIBUTES代表文件不存在。

FILE_ATTRIBUTE_DIRECTORY代表当前路径为一目录。

返回的其他类型可以搜索GetFileAttributes函数进行查阅。

bool IsDirectoryExist(string strDirpath){DWORD dwAttr = INVALID_FILE_ATTRIBUTES;dwAttr = GetFileAttributes(strDirpath.c_str());return (dwAttr != INVALID_FILE_ATTRIBUTES) && (dwAttr & FILE_ATTRIBUTE_DIRECTORY);}
获取目录下文件(_findfirst函数):

包含头文件<io.h>即可。

需要使用类_finddata_t(用于存储文件相关信息)。

_findfirst函数获取目录下第一个文件信息,返回对应的文件指针。

然后用_findnext获取下一个文件信息,如果该函数返回为0,则代表无下一个文件信息。

最后需要用_findclose关闭文件句柄。

void GetFilesInDir(vector<string> &filepaths, string dirpath){long hfile = 0;_finddata_t fileinfo;hfile = _findfirst((dirpath + "\\*").c_str(), &fileinfo);if(hfile != -1){while(true){// 如果是目录,迭代寻找 if(fileinfo.attrib & _A_SUBDIR){if(strcmp(fileinfo.name, ".") !=0 && strcmp(fileinfo.name, "..") != 0)GetFilesInDir(filepaths, dirpath + "\\" + fileinfo.name);}else{filepaths.push_back(dirpath + "\\" + fileinfo.name);}if(_findnext(hfile, &fileinfo)){break;}}_findclose(hfile);}}

文件输入输出操作(fgetc/fputc函数):

也是只要<stdio.h>头文件即可。

分为单个字符输入/输出和字符串输入/输出格式。

FILE *pFile = fopen(filepath, "ab+");//读入到内存 //单个字符 int c;c = fgetc(pFile);//字符串 fscanf(pFile, "%s", strContent);//输出到文件//字符串 fprintf(pFile, "%s", "HelloWorld");int c = 'A';//单个字符 fputc(c, pFile);



按照目前来说,用到的文件操作就这么多,当程序趋向于完善时,可能还需要增加修改文件权限、删除文件、创建目录等功能。