右击项目->属性->字符集:使用多字节字符集。
这样可以使用char到CString的转化。
char sRead[20] = "";
CString strtest = sRead;

大气象

//文件查找
/*CString strFileTitle;
CFileFind finder;
BOOL bWorking = finder.FindFile(_T("C:\*.sys"));
while (bWorking)
{
bWorking = finder.FindNextFile();
strFileTitle += finder.GetFileTitle() + _T("\n");
}
m_info = strFileTitle + _T(" end");
UpdateData(FALSE);*/

CFileDialog mFileDlg(TRUE, NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT
                     ,_T("All Files (*.*)|*.*| |"), AfxGetMainWnd()); 
if (mFileDlg.DoModal() == IDOK)
{

//取得文件路径
    //AfxMessageBox(mFileDlg.GetPathName());

//对文件进行读操作 
    //char sRead[20] = ""; 
    //CFile mFile(mFileDlg.GetPathName(),CFile::modeRead); 
    ////if(mFile.GetLength()<20) 
    ////    return; 
    //mFile.Read(sRead,20); 
    //mFile.Close(); 
    ////char*转CString
    ////CString.format("%s", char*);  
    //CString strtest = sRead;
    //AfxMessageBox(strtest);

//对文件进行写操作 
    char sRead[20] = ""; 
    CString str(_T("aa中文aaaa"));  
    strncpy(sRead,(LPCTSTR)str,sizeof(sRead)); 
    CFile mFile(mFileDlg.GetPathName(), CFile::modeWrite|CFile::modeCreate); 
    mFile.Write(sRead,20); 
    mFile.Flush(); 
    mFile.Close();

//
    /*CString str(_T(""), 10000); 
    mFileDlg.m_ofn.lpstrFile = str.GetBuffer(10000); 
    str.ReleaseBuffer(); 
    POSITION mPos = mFileDlg.GetStartPosition(); 
    CString pathName(_T(""), 128); 
    CFileStatus status; 
    while(mPos!=NULL) 
    { 
    pathName = mFileDlg.GetNextPathName(mPos); 
    CFile::GetStatus(pathName, status); 
    } */
}

更多参考:

   1. 文件的查找

   当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件

查找的类“CFileFind”,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方

法。

CString strFileTitle;
CFileFind finder;
BOOL bWorking = finder.FindFile(“C:Windowssysbkup*.cab”);
while(bWorking)
{
bWorking=finder.FindNextFile();
strFileTitle=finder.GetFileTitle();
}

   2. 文件的打开/保存对话框

   让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。MFC的类“CFileDialog”用于

实现这种功能。使用“CFileDialog”声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为

TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。

   在构造“CFileDialog”对象时,如果在参数中指定了“OFN_ALLOWMULTISELECT”风格,则在此对话框中

可以进行多选操作。此时要重点注意为此“CFileDialog”对象的“m_ofn.lpstrFile”分配一块内存,用于存

储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致操作失败。下面这段程序演

示了文件打开对话框的使用方法。

CFileDialog mFileDlg(TRUE, NULL,NULL, OFN_HIDEREADONLY|OFN_OVER
WRITEPROMPT|OFN_ALLOWMULTISELECT,“All Files (*.*)|*.*| |”, AfxGetMainWnd());
CString str(“ ”, 10000);
mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);
str.ReleaseBuffer();
POSITION mPos=mFileDlg.GetStartPosition();
CString pathName(“ ”, 128);
CFileStatus status;
while(mPos!=NULL)
{
pathName=mFileDlg.GetNextPathName(mPos);
CFile::GetStatus(pathName, status);
}

3. 文件的读写

   文件的读写非常重要,下面将重点进行介绍。文件读写最普通的方法是直接使用“CFile”类进行,如文

件的读写可以使用下面的方法:

//对文件进行读操作
char sRead[2];
CFile mFile(_T(“user.txt”),CFile::modeRead);
if(mFile.GetLength()<2)
return;
mFile.Read(sRead,2);
mFile.Close();
//对文件进行写操作
CFile mFile(_T(“user.txt”), CFile::modeWrite|CFile::modeCreate);
mFile.Write(sRead,2);
mFile.Flush();
mFile.Close();

   虽然这种方法最为基本,但是它使用烦琐,而且功能非常简单。这里推荐的是使用“CArchive”,它的使

用方法简单且功能十分强大。首先还是用“CFile”声明一个对象,然后用这个对象的指针做参数声明一个

“CArchive”对象,这样就可以非常方便地存储各种复杂的数据类型了。它的使用方法见下例:

//对文件进行写操作
CString strTemp;
CFile mFile;
mFile.Open(“d:ddtry.TRY”,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
CArchive ar(&mFile,CArchive::store);
ar<<strTemp;
ar.Close();
mFile.Close();
//对文件进行读操作
CFile mFile;
if(mFile.Open(“d:ddtry.TRY”,CFile::modeRead)==0)
return;
CArchive ar(&mFile,CArchive::load);
ar>>strTemp;
ar.Close();
mFile.Close();

   “CArchive”的“<<”和“>>”操作符用于简单数据类型的读写,对于“CObject”派生类的对象的存取

要使用ReadObject()和WriteObject()。使用“CArchive”的ReadClass()和WriteClass()还可以进行类的读写

,如:

//存储CAboutDlg类
ar.WriteClass(RUNTIME_CLASS(CAboutDlg));
//读取CAboutDlg类
CRuntimeClass*mRunClass=ar.Read
Class();
//使用CAboutDlg类
CObject* pObject=mRunClass->CreateObject();
((CDialog* )pObject)->DoModal();

   虽然VC提供的文档/视结构中的文档也可进行这些操作,但是不容易理解、使用和管理,如果要进行的文

件操作只是简单的读写整行的字符串,建议使用“CStdioFile”,用它来进行此类操作非常方便,如下例:

CStdioFile mFile;
CFileException mExcept;
mFile.Open( “d:tempaa.bat”, CFile::modeWrite, &mExcept);
CString string=“I am a string.”;
mFile.WriteString(string);
mFile.Close();

   4.临时文件的使用

   正规软件经常用到临时文件,经常可以看到“C:WindowsTemp”目录下有大量的扩展名为“.tmp”的文件

,这些就是程序运行时建立的临时文件。临时文件的使用方法基本与常规文件一样,只是文件名应该调用函数

GetTempFileName()获得。它的第一个参数是建立此临时文件的路径,第二个参数是建立临时文件名的前缀,第

四个参数用于得到建立的临时文件名。得到此临时文件名以后,就可以用它来建立并操作文件了,如:

char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH];
GetTempPath(_MAX_PATH, szTempPath);
GetTempFileName(szTempPath,_T (“my_”),0,szTempfile);
CFile m_tempFile(szTempfile,CFile:: modeCreate|CFile:: modeWrite);
char m_char=‘a';
m_tempFile.Write(&m_char,2);
m_tempFile.Close();

   5.文件的复制、删除等

   MFC中没有提供直接进行这些操作的功能,因而要使用SDK。SDK中的文件相关函数常用的有CopyFile()、

CreateDirectory()、DeleteFile()、MoveFile()。它们的用法很简单,可参考MSDN。

转载于:https://www.cnblogs.com/greatverve/archive/2010/11/18/cfile.html

VC 文件操作(文件查找,打开/保存,读/写,复制/删除/重命名)相关推荐

  1. 基于Python的文件操作之第1课读文件

    学习目标 掌握基于python对文件相关操作 每种格式包含很多相关操作,学习只要掌握知识点的用法,参考笔记可以实现相关的练习即可,不必背会,在企业开发过程中边搜实现. 学习内容 了解python函数和 ...

  2. Python基础day07 作业解析【文件操作(文件读写、文件夹操作)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day07[文件读写.文件夹操作.面向对象(类.对象)] 目录 加强训练 题目1 ...

  3. 【Java文件操作(六)】借助内存复制图片:ByteArrayOutputStream\ByteArrayInputStream\FileOutputStream\FileInputStream辨析

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  4. java流与文件——操作文件

    [0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--操作文件 的相关知识: 0.2) for source code, please vi ...

  5. Linux——权限|shell运行原理——外壳程序|Linux权限的概念|对人操作|角色和文件操作|文件类型访问权限|修改权限ugo+-|8进制|修改权限|更改文件的拥有

    目录 shell运行原理--外壳程序 Linux权限的概念 对人操作 角色和文件操作 文件类型

  6. 【Python】shutil内置模块复制和重命名文件

    在日常工作和生活中,我们经常要复制和重命名文件,如果遇到大量数据处理时,手动去操作非常麻烦,现在我们可以通过python的shutil模块完成,以下主要介绍几种场景: 1.复制一个文件到其他目录,不重 ...

  7. python3 文件 复制、重命名、移动、删除

    简介 shutil 模块 提供了多个针对文件或文件集合的高等级操作. 尤其是,文件的复制和删除操作. 对于独立文件的操作, 参考 os 模块 警告: 即使是更高等级的文件复制功能 ( shutil.c ...

  8. 在Python中复制和重命名文件

    Using shutil (shell utilities) module, file operation such as copy, rename, move, etc is very handy. ...

  9. python 复制 移动 重命名文件

    python 复制 移动 重命名文件 import os import shutil # 复制文件: shutil.copyfile("oldfile", "newfil ...

最新文章

  1. Codeforces 454C - Little Pony and Expected Maximum
  2. 【mysql学习笔记整理】
  3. 更强、更稳、更高效:解读 etcd 技术升级的三驾马车
  4. 替换SQL字段中的换行符,回车符
  5. 一文说清linux system load
  6. Java接口、implements关键字、接口中抽象方法,默认方法,静态方法,私有方法,常量、final关键字
  7. python 数据库查询结果_python 数据库查询结果
  8. 如何查看 Linux是32位还是64位?
  9. JavaScript数组对象教程–如何使用JS数组方法创建,更新和遍历对象
  10. 笨办法学 Python · 续 练习 52:`moreweb`
  11. a*算法路径规划matlab_【优化求解】基于栅格地图——遗传算法的机器人最优路径规划...
  12. 主题:大胆预测下JS框架的走势(ZT)
  13. Linux远程秘钥登录方式
  14. 洛谷P3952 时间复杂度
  15. php怎么处理一对多,php - 如何处理内部连接以及与OOP的一对多关系? - SO中文参考 - www.soinside.com...
  16. android apk 微信登入_Android集成微信登录的步骤详解
  17. 单点登录 用友nc_用友NC与OA集成解决方案!
  18. 草根程序员转型做项目管理走过的点点滴滴之_华为裁员感想
  19. linux设备号——常见设备的主次设备号
  20. 阿里云过期域名的赎回与删除

热门文章

  1. asp.net/c#字符格式化大总结
  2. PEAR, PECL和Perl的区别
  3. C语言文件操作函数大全
  4. NEON在Android中的使用举例
  5. 设计模式之迭代器模式(Iterator)摘录
  6. 【Qt】Qt动态库和静态库的创建和使用
  7. integer比较_傻傻分不清?Integer、new Integer() 和 int 的面试题
  8. Java项目:精美网上音乐平台(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
  9. C语言的基础题目,几个c语言的基础题目
  10. 【Linux】Linux简单操作之压缩解压