除非关闭程序否则无法删除文件

Gen*_*ren 0 c++ winapi

我有这个代码

CreateFileA(path.c_str(), GENERIC_READ, FILE_SHARE_READ, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但唯一的问题是我无法读取、写入或删除该文件,除非退出程序。有任何想法吗?

小智 6

您应该将 的返回值存储CreateFileA在类型为 的变量中HANDLE

HANDLE hFile = CreateFileA(path.c_str(), GENERIC_READ, FILE_SHARE_READ, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
Run Code Online (Sandbox Code Playgroud)

然后,当你完成后,调用:

CloseHandle(hFile);
Run Code Online (Sandbox Code Playgroud)

之后您应该能够删除该文件。

  • @GenZKaren `std::ostream` 是创建文件的“C++”方式(而 `std::istream` 是打开已存在文件的方式),是的,您需要先关闭它,然后才能删除无论哪种方式。这是 Windows 的事情。 (2认同)