VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1281|回复: 1

[原创] CFile文件的基本操作

[复制链接]
83_avatar_middle
最佳答案
0 
在线会员 发表于 2023-9-10 16:24:14 | 显示全部楼层 |阅读模式

1、创建文件

  1. int _tmain(int argc,TCHAR* argv)
  2. {

  3.         //创建文件对象
  4.         CFile file;

  5.         //创建1.txt文件。如果存在就用存在的,没有就新建
  6.         CFileException ex;
  7.         file.Open(_TEXT("D:\\temp\\a\\aa\\1.txt"),
  8.                 CFile::modeCreate|
  9.                 CFile::modeNoTruncate,
  10.                 &ex);

  11.        
  12.         //关闭文件
  13.         file.Close();
  14.        
  15.        
  16.         return 0;
  17. }
复制代码


2、读文件内容

  1. int _tmain(int argc,TCHAR* argv)
  2. {
  3.         //创建文件
  4.         CFile file;

  5.        
  6.         //打开文件,并请求写入访问权限
  7.         CFileException ex;
  8.         file.Open(_T("D:\\temp\\a\\aa\\1.txt"), CFile::modeRead, &ex);


  9.         int nfileChar =  file.GetLength(); //坑点,不能用THAR* 只能用char*
  10.         char* lpBuf = new char[nfileChar];
  11.         memset(lpBuf, '\0', nfileChar); //根据内容长度,动态分配缓存


  12.           file.Read(lpBuf,nfileChar);        //读取文件内容到 缓存

  13.         CString msg = CA2W(lpBuf,CP_UTF8); //将窄字节转为宽字节  转的时候,用CA2W直接用指针接受也会用问题,必须要用CString来过渡下,要不就的用MutilByWchar..Win32API

  14.         //输出结果
  15.         std::wcout.imbue(std::locale("chs"));//处理w_cout 不显示中文的情况
  16.         wcout << (const wchar_t*)msg;

  17.         delete[] lpBuf;

  18.         file.Close();
  19.        
  20.         return 0;
  21. }
复制代码


3、写文件内容

  1. int _tmain(int argc,TCHAR* argv)
  2. {
  3.         CFile cfile; //创建文件

  4.         //打开文件
  5.         CFileException ex;
  6.         cfile.Open(_T("D:\\temp\\a\\aa\\1.txt"),
  7.                 CFile::modeNoTruncate|CFile::modeWrite,
  8.                 &ex);


  9.         char msg[256] = {0};
  10.         sprintf_s(msg, "哈哈哈%d", 123); //文件类CFile 最好用char* 窄字节 写入和读取
  11.        

  12.         cfile.SeekToEnd(); //移动光标在文本的最后一行实现追加,默认光标在第一个字节处,每次写都会覆盖原有文件的内容。
  13.         cfile.Write(msg,(strlen(msg)) * sizeof (char)); //将内容写入文件缓冲区        //不要空格,如果直接传256,后面的很多个0都会也追加到文件中
  14.         cfile.Flush();  //刷新缓存区,将内容写入到文件中

  15.         cfile.Close();
  16.        
  17.         return 0;
  18. }
复制代码





上一篇:复杂的宽窄字节数据类型
29_avatar_middle
最佳答案
0 
在线会员 发表于 2023-9-12 15:13:53 | 显示全部楼层
我靠牛逼,向大佬学习!!!!!
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2024-4-15 19:49

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表