我正在尝试删除文件(如果存在)。因此,首先我测试文件是否存在,是否使用const Root = document.documentElement
// ...
Root.style.setProperty('--ImgWith', '50px')
将其删除。 test.json包含一些与json相关的txt。我还包括std::remove
。
#include <cstdio>
我原以为ret val是 std::string file_to_remove = "test.json";
std::ifstream f(file_to_remove.c_str());
if (f.good()) {
int val = std::remove(file_to_remove.c_str());
std::cout << "\nRemoving file : " << file_to_remove << " : ret val : " << val<< std::endl;
}
,但我得到0
我当前的输出是:
删除文件:test.json:ret val:-1
我还确保了文件已关闭。
答案 0 :(得分:4)
您尝试删除打开的文件。
在Posix系统(例如Linux)中,可以删除打开的文件。它将继续存在于磁盘上,并且只要打开就可以使用,但是由于目录条目已被删除,因此它对其他人不可见。当您关闭文件时,该文件将消失。
在Windows中,您无法删除打开的文件。使用perror
或GetLastError
检查错误代码。
答案 1 :(得分:4)
摘自std::remove()
(重点是我)的文档:
如果当前正在通过此过程或其他过程打开文件,则此功能的行为是实现定义的(特别是POSIX系统会取消链接文件名,尽管不会回收文件系统空间直到最后一个正在运行的进程关闭文件; Windows不允许删除文件)。
表示如果文件已打开,则在Windows上不会删除文件。它将返回错误(例如-1)。
由于定义了实现,因此任何其他平台实际上都可以是任何东西。我会研究您的平台/编译器,看看在打开的文件上调用std::remove()
的结果是什么。
添加f.close()之后;在std :: remove ret val之前现在为0
这很有意义,因为f.close()
关闭了文件。文件已关闭,可以将其删除。