【发布时间】:2017-01-26 16:57:37
【问题描述】:
我在尝试DeleteFile()函数,我写了下面的程序。
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
int main(){
FILE * filetxt;
// creat a file
filetxt = fopen("C:\\Users\\Thomas\\Desktop\\filetxt.txt", "w");
// delete the file
if (DeleteFile("\\\\.\\C:\\Users\\Thomas\\Desktop\\filetxt.txt") != 0){
cout<<"success";
}else{
cout<<"fail";
}
cin;
}
但是程序没有按预期运行。创建的文件没有被删除。
输出是:
fail
【问题讨论】:
-
那是因为你打开了那个文件。您应该先关闭该文件,然后再尝试删除它
-
为什么不打电话给
GetLastError看看文件删除失败的原因? -
尝试在
"// delete the file"行前添加fclose(); -
> 如果应用程序尝试删除为正常 I/O 或作为内存映射文件打开了其他句柄的文件,DeleteFile 函数将失败(打开其他句柄时必须指定 FILE_SHARE_DELETE) .
-
我很惊讶 \\.\ 路径表示法适用于非 Unicode 版本的 DeleteFile。