C++ 无法删除 Windows 环境中的文件
C++ Cannot Remove File in Windows Environment
我想在XCODE上工作一段时间后Microsoft Visual Studio IDE试一试。我能够导入我的所有代码,但无法弄清楚为什么remove
函数在 Windows 环境中不起作用。正在写入该文件以C:UsersLinussourceprojproj
我的项目的同一位置。我很困惑,因为我的程序可以写入和读取文件,但无法删除它们。即使我更改了它的方案,我在 XCODE 删除文件时也没有任何问题(文件被写入另一个目录并且删除工作正常(。我对Visual Studio没有太多经验,非常感谢有关正确设置项目的任何建议,以便我可以删除文件。
项目.cpp
#include "stdafx.h"
#include "iostream"
#include "fstream"
using namespace std;
int main()
{
ifstream newFile("newFile.txt");
if (remove("newFile.txt") != 0) {
cout << "removed file" << endl;
}
return 0;
}
项目目录
Directory of C:UsersLinussourcereposprojproj
06/06/2018 11:49 PM <DIR> .
06/06/2018 11:49 PM <DIR> ..
06/07/2018 08:03 AM <DIR> Debug
06/06/2018 11:41 PM 288 proj.cpp
06/06/2018 11:49 PM 8,362 proj.vcxproj
06/06/2018 11:48 PM 1,519 proj.vcxproj.filters
06/06/2018 11:41 PM 165 proj.vcxproj.user
06/07/2018 08:03 AM 16 firstHalf.txt
06/07/2018 08:03 AM 0 newFirstHalf.txt
06/07/2018 08:03 AM 0 newSecondHalf.txt
06/07/2018 08:03 AM 28 random.txt //can't remove this
06/07/2018 08:03 AM 14 secondHalf.txt
06/06/2018 11:41 PM 602 stdafx.cpp
06/06/2018 11:41 PM 642 stdafx.h
06/06/2018 11:41 PM 630 targetver.h
12 File(s) 12,266 bytes
3 Dir(s) 37,871,968,256 bytes free
在 Mac/Linux/Unix 上,您可以删除打开的文件,因为文件系统足够聪明,知道在删除打开的文件时,在最后一个句柄关闭之前不要删除实际的磁盘文件。
Windows没有这个概念,所以通常不能删除在程序中打开的文件(尽管通常仍然可以重命名它们(。
若要修复代码,请在删除文件之前关闭流:
#include "stdafx.h"
#include "iostream"
#include "fstream"
using namespace std;
int main()
{
ifstream newFile("newFile.txt");
if (!newFile) {
cout << "file not opened" << endl;
return 1;
}
newFile.close();
if (remove("newFile.txt") == 0) {
cout << "removed file" << endl;
}
return 0;
}
注意:即使这样也可能并不总是有效,尤其是在存在病毒检查器的情况下,这些检查器可能在您调用删除之前打开了您的文件。
相关文章:
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 创建一个包含 c++ 默认值的环境文件
- 定义C++新的环境变量并在 bat 文件中使用它
- 如何使用可视化代码和平台IO将环境变量注入CPP文件?
- 选择特定版本的 Visual Studio 命令行工具包,并根据特定版本的C++运行时环境编译文件
- 为什么我不能将 Windows 环境路径与 ofstream 一起使用来编写文本文件?
- C++ 无法删除 Windows 环境中的文件
- 如何在Log4CPP属性文件中使用环境变量
- 如何从文件中存在的路径中检索环境变量
- 如何在C++环境中使用 Tensorflow 库调用 python 文件
- TCL文件无法获取通过代码设置的环境变量
- 如何使用CMakeLists.txt为我的可执行文件设置bash中的环境变量
- 如何使用.bat文件在VS2010中添加环境变量
- 获取通过环境变量访问的文件的位置
- C++ Linux 在部署环境中安装可执行文件
- 代码块,添加了环境变量路径,但在安装文件夹之外出现 g++ 错误
- 生成文件 C/C++,其功能取决于环境
- 如果可执行文件在两个或多个节点上运行,为什么它不能看到环境变量?
- 在Boost文件系统中使用环境变量
- 创建一个可以在 Windows 环境中的现有生成文件项目上运行的 clang 工具