文件操作相关(通用篇)

3 篇文章 0 订阅

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多次关闭同一文件指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值