我已经实现了以下函数,在这个函数中,它获得了一个文件的路径,然后试图从文件系统中删除它。
这个函数不能正常工作,因为当我调用它来删除一个文件时,这个文件不会被删除,直到我关闭程序。当我关闭程序时,我指定的文件将被删除。我不知道代码有什么问题。
bool DeleteFileOnSystem(const char* arg_path, const char* arg_name_file)
{
char c_FilePath[MAX_PATH];
strcpy_s(c_FilePath, MAX_PATH, arg_path);
strcat(c_FilePath, arg_name_file);
if (DeleteFile(c_FilePath))
return true;
else
return false;
}
它确实删除了文件,没有任何问题。
显然,你的程序在其他地方打开了文件,而没有关闭它。所以句柄保持打开,直到程序存在。
确保你关闭你的文件句柄。
这种行为的 DeleteFile
是一个功能,而不是一个错误。
当你打开 删除文件你可以找到以下的语句。
DeleteFile函数在关闭时标记了一个文件的删除。因此,在最后一个文件句柄关闭之前,文件的删除不会发生。随后调用CreateFile打开文件会以ERROR_ACCESS_DENIED失败。
在调用CreateFile之前,请确保文件的所有句柄都被关闭。DeleteFile
API。