com 用于指定要删除文件的路径名,可以为相对路径也可以为绝对路径。
注意该函数不能删除目录。如果指定的文件已打开或者文件不能被删除,Remove()函数
将抛出异常。
实例8-2:文件cāo作实例。源代码在光盘中“\08\实例8-2\FileManipulate”目录下。
FileManipulate 示例是一个基于对话框的MFC 应用程序,其界面如图8-2 所示。该示例
实现了文件的删除、复制和移动功能。选择好原始文件和目标文件(可以自行输入也可以单
击对应的“打开”按钮打开文件对话框进行选择),然后单击对话框底部的按钮可以实现如下
的文件cāo作:
? “删除原始文件”按钮:用于删除原始文件输入框所指定的文件。
? “复制”按钮:用于将原始文件复制到目标文件。
? “移动”按钮:用于将原始文件移动到目标文件。
图8-2 “文件cāo作”对话框
删除文件的代码在CFileManipulateDlg::OnDel()中,用到了CFile::Remove()静态成员函数
进行删除。
复制文件的代码在CFileManipulateDlg::OnCopy()中,其思想是将原始文件的内容分几次
读入内存中,再将内存中的数据依次写入目标文件,代码如下:
pSrcFile=new CFile(m_szSrcFile, CFile::modeRead); //原始文件
枫叶文学网www.fywxw.com
第8 章 文件cāo作
·201·
pDstFile=new CFile(m_szDstFile, CFile::modeCreate|
CFile::modeWrite); //目标文件
int nRead; //读取的字节数
char szBuffer[1024]; //复制缓冲区,用于将读取的数据缓存,然后写入
//循环直到读取的字节数为0
while (nRead=pSrcFile->Read(szBuffer,sizeof(szBuffer)))
{
pDstFile->Write(szBuffer,nRead);
}
pSrcFile->Close();
pDstFile->Close();
delete pSrcFile;
delete pDstFile;
移动文件的代码在CFileManipulateDlg::OnMove()中,其主要思想是将原始文件复制到目
标文件后再删除原始文件。
技巧:CFile::Remove()函数不能删除目录,而Windows API 提供了RemoveDirectory()函数,用于
删除一个空目录,对于目录中的文件需要自行删除。MFC 中提供CFileFind 类用于枚举目
录中的子文件, 使用这个类的功能枚举出目录中的所有文件并删除, 再使用
RemoveDirectory()删除空目录即可完成删除目录的功能。
下面介绍删除目录的详细过程。首先需要枚举目录文件。