• 文件操作的方式


    C语言文件操作

    读写操作含义
    r只读
    w重新写入,即如果文件已存在,则覆盖写入
    aadd,追加,在文件后追加
    r+以可读可写操作打开
    w+以可读可写操作打开,并重新写入
    a+以可读可写操作打开,并且追加

    1.写操作

    FILE* pFile = fopen("1.txt", "w");
    1. char szBuff[100] = "C语言写文件";
    2. int ret=fwrite(szBuff, 1, strlen(szBuff)+1, pFile);

    fwrite第一个参数表示字符串,第二个表示每个字符的大小,第三个表示字符串总长度,第四个表示文件地址

    测试是否成功

    1. if (fwrite (szBuff, 1, iLen, pFile) < 0 )
    2. {
    3. MessageBox( "失败");
    4. }

    为什么不是小于等于0呢,因为这个写操作是可以等于0的,哪些情况可以等于0呢?我提了个相关问题,可以参考一下。

    2.读操作

    FILE* pFile = fopen("1.txt", "r");
    1. fseek(pFile, 0, SEEK_END); /求文件偏移量
    2. char Readbuf[1024] = { 0 };
    3. fseek(pFile, 0, SEEK_SET); /将文件指针重新指向开头
    4. int len = ftell(pFile); /得到文件指针当前位置
    5. int iLen = fread(Readbuf, 1, len, pFile);

    将文件读取到readbuf中,读取大小为len

     c++文件操作

    这两个都要包含头文件<fstream>

    1.写操作

    1. std::ofstream ofs("2.txt"); /表示文件名
    2. char szBuff[] = "C++写文件";
    3. ofs.write(szBuff, strlen(szBuff));
    4. ofs.close();

    2.读操作

    1. std::ifstream ifs("2.txt");
    2. char szBuff[100]{};
    3. ifs.read(szBuff, 100);
    4. ifs.close();
    5. MessageBox(szBuff);

    WIN32 API 操作文件

    写操作

    写操作1.CreateFile,第二个参数表示访问方式,第三个表示共享方式,第四个为安全属性,第五个为如何创建文件,第六个设置文件属性和标志

    1. HANDLE hfile;
    2. hfile = CreateFile("3.txt", GENERIC_WRITE, NULL, NULL,
    3. OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

    2.判断函数

    1. if (hfile==INVALID_HANDLE_VALUE)
    2. {
    3. TRACE("ERROR:%d\n", GetLastError());
    4. MessageBox("创建文件对象失败");
    5. return;
    6. }

    3.写入数据

    1. char szBuff[1024] = "WIN32写文件";
    2. DWORD dWrites;
    3. /第三个参数表示真正写入的长度
    4. WriteFile(hfile, szBuff, strlen(szBuff) + 1, &dWrites,NULL);

     读操作

    1.创建文件

    1. HANDLE hfile;
    2. hfile = CreateFile("3.txt", GENERIC_READ, NULL, NULL,
    3. OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

     第五个参数可选,表示打开i一个已存在的文件

    2.读数据

    1. char szBuff[1024] ={0};
    2. DWORD dReads;
    3. ReadFile(hfile, szBuff, 1024, &dReads, NULL);
    4. CloseHandle(hfile);
    5. MessageBox(szBuff);

    这里将数据读到szBuff中

    MFC操作文件

    1.写文件,和C++写操作很类似

    1. CFile file("4.txt",CFile::modeCreate|CFile::modeWrite);
    2. char szBuff[] = "MFC写文件";
    3. file.Write(szBuff, strlen(szBuff));
    4. file.Close();

    2.读文件

    1. CFile file("4.txt", CFile::modeRead);
    2. char szBuff[1024]{};
    3. file.Read(szBuff, 1024);
    4. file.Close();
    5. MessageBox(szBuff);

    读文件高阶操作

    1. CFileDialog fileDlg(true);
    2. fileDlg.m_ofn.lpstrTitle = "Text";
    3. fileDlg.m_ofn.lpstrTitle =
    4. "Text Files(*.txt)\0*.txt\0All File(*.*)\0*.*\0\0";
    5. if (IDOK==fileDlg.DoModal())
    6. {
    7. CFile file(fileDlg.GetFileName(), CFile::modeRead);
    8. DWORD dwfilen = file.GetLength();
    9. char szBuff[1024]{};
    10. file.Read(szBuff, dwfilen);
    11. file.Close();
    12. MessageBox(szBuff);
    13. }

    第一行代码表示创建一个Cfiledialog文件,第二行表示设置标题,第三行表示设置过滤器,只允许选择 .txt 文件或所有文件

  • 相关阅读:
    promise怎么用?promise的各种使用方法及理解?
    2023华东交通大学计算机考研信息汇总
    leetcode88. 合并两个有序数组
    day41 jdk8新特性Stream流 数据库安装
    基于 Gin 的 HTTP 代理 demo
    45 二叉树的右视图
    Spring Boot 日志文件
    Haproxy+Nginx搭建负载均衡集群
    万字手撕AVL树 | 上百行的旋转你真的会了吗?【超用心超详细图文解释 | 一篇学会AVL】
    【Nacos篇】Nacos基本操作及配置
  • 原文地址:https://blog.csdn.net/qq_38290986/article/details/130900018