mfc 复制已打开的文件到指定的目录,函数路径参数用CString
时间: 2024-03-13 19:43:55 浏览: 62
可以使用CFile类和CString类来实现复制已打开的文件到指定的目录。具体步骤如下:
1. 获取文件名和路径
在打开文件的时候,可以使用CFileDialog类获取文件名和路径,然后将它们存储在CString对象中。
例如:
```
CFileDialog dlg(TRUE);
if (dlg.DoModal() == IDOK) {
CString strFileName = dlg.GetFileName();
CString strFilePath = dlg.GetPathName();
}
```
2. 打开文件
使用CFile类打开文件,并将文件句柄存储在CFile对象中。
例如:
```
CFile file;
if (file.Open(strFilePath, CFile::modeRead)) {
// 文件已打开
}
```
3. 创建目标文件
使用CFile类创建目标文件,并将文件句柄存储在CFile对象中。
例如:
```
CString strDestPath = "C:\\Temp\\" + strFileName;
CFile destFile;
if (destFile.Open(strDestPath, CFile::modeCreate | CFile::modeWrite)) {
// 目标文件已创建
}
```
4. 复制文件内容
使用CFile类的Read和Write函数复制文件内容到目标文件。
例如:
```
BYTE buffer[1024];
UINT nBytesRead;
while ((nBytesRead = file.Read(buffer, sizeof(buffer))) > 0) {
destFile.Write(buffer, nBytesRead);
}
```
完整的代码示例:
```
CFileDialog dlg(TRUE);
if (dlg.DoModal() == IDOK) {
CString strFileName = dlg.GetFileName();
CString strFilePath = dlg.GetPathName();
CFile file;
if (file.Open(strFilePath, CFile::modeRead)) {
CString strDestPath = "C:\\Temp\\" + strFileName;
CFile destFile;
if (destFile.Open(strDestPath, CFile::modeCreate | CFile::modeWrite)) {
BYTE buffer[1024];
UINT nBytesRead;
while ((nBytesRead = file.Read(buffer, sizeof(buffer))) > 0) {
destFile.Write(buffer, nBytesRead);
}
destFile.Close();
}
file.Close();
}
}
```
阅读全文