1. 标准 C 篇
(1) 确定文件或文件夹的访问权限
#include <io.h> //windows
#include <unistd.h> //linux
int access(const char *filename, int mode);
mode [in]
0 F_OK 判断是否存在
2 R_OK 判断读取权限
4 W_OK 判断写入权限
6 X_OK 判断执行权限
return
0 - 有效
-1 - 无效
(2) 创建目录
int mkdir(char* pathname);
return
0 - success
-1 - error
(3) 删除目录或文件
int unlink(char* pathname);
return
0 - success
-1 - error
(4) fopen
FILE * fopen(const char * path, const char * mode);
mode [in]
"r" - 以只读方式打开文件,该文件必须存在
"r+" - 以读/写方式打开文件,该文件必须存在
"rb+" - 以读/写方式打开一个二进制文件
"w" - 打开只写文件,若文件存在则长度清为 0,若不存在则创建该文件
"w+" - 打开可读/写文件, 若文件存在则长度清为 0,若不存在则创建该文件
"wb+" - 以读/写方式打开或建立一个二进制文件,允许读和写
"a" - 以附加的方式打开只写文件。若文件不存在,则会建立该文件
"a+" - 以附加方式打开可读/写的文件。若文件不存在,则会建立该文件
"ab+" - 以读/写方式打开一个二进制文件,允许读/写在文件末追加数据
"wx" - 若文件存在,则失败(c2011)
(5) fclose
int fclose(FILE *stream);
注: 多次close文件指针会出错
(6) 文件位置指针当前位置
long ftell(FILE* stream);
(7) 重定位文件指针
int fseek(FILE *stream, long offset, int fromwhere);
offset - 指针偏移量
fromwhere - 起始基准
SEEK_SET - 文件头
SEEK_CUR - 当前位置
SEEK_END - 文件尾
(8) fread
size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;
size - 要读的每个数据项的字节数,单位是字节
cout - 要读count个数据项,每个数据项size个字节
ex: fread(buffer, sizeof(char), cout, stream);
(9) fwrite
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
(10) 格式化输出到文件中
int fprintf(FILE *stream, char *format[, argument,...]);
(11) 从输入流中执行格式化输入
int fscanf(FILE *stream, char *format[,argument...]);
(12) 将文件描述词转为文件指针
FILE * fdopen(int fildes,const char * mode);
mode - 必须和原先文件描述词读写模式相同
(13)更新缓冲区
int fflush(FILE* stream);
(14) 检查文件流是否读到了文件尾
int feof(FILE * stream);
return
0 -
!0 - 文件尾
(15) 返回文件流所使用的文件描述词
int fileno(FILE * stream);
2. 标准 C++ 篇
(1) fstream - 输入输出流
(2) ifstream - 输入流
(3) ofstream - 输出流
(4) fstream::open
void open (const char * filename, openmode mode);
mode - 使用操作符 | 间隔
ios::in - 读
ios::out - 写
ios::ate - 初始位置:文件尾
ios::app - 附加
ios::trunc - 文件已存在则文件长度设为0
ios::binary - 二进制方式
//ios::nocreate - 文件不存在时打开失败
//ios::noreplace - 文件存在失败
注: 默认打开方式
ofstream - ios::out | ios::trunc
ifstream - ios::in
fstream - ios::in | ios::out
注: 文件创建
ifstream - 只读模式打开文件,文件不存在,不会创建
ofstream - 只写模式打开文件,文件不存在,创建文件
fstream - 文件不存在, 只写模式打开可以创建, 以读/写或只读模式不能创建空文件
(5) 设置文件指针位置
读指针 istream &seekg(streamoff offset,seek_dir origin);
写指针 ostream &seekp(streamoff offset,seek_dir origin);
origin - 起始基准
ios::beg
ios::cur
ios::end
(6) 获取文件指针
读指针 pos_type tellg();
写指针 pos_type tellp();
(7) close();
(8) read
istream& read (char* s, streamsize n);
(9) write
ostream& write (const char* s, streamsize n);
(10) flush();
(11) 提取数据
istream& getline(char* s, streamsize n, char delim='\n');
delim - 若遇到 delim 符号则结束提取
3. 文件操作的问题
(1) 文件路径含有中文
(2) fclose多次关闭同一文件指针