st4*_*gut -1 c++ visual-studio
在使用 XCODE 一段时间后,我想尝试一下 Microsoft Visual Studio IDE。我能够导入我的所有代码,但无法弄清楚为什么该remove功能在 Windows 环境中不起作用。该文件正在写入C:\Users\Linus\source\proj\proj我的项目的同一位置。我很困惑,因为我的程序可以读写文件,但不能删除它们。我在 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;
}
Run Code Online (Sandbox Code Playgroud)
项目目录
Directory of C:\Users\Linus\source\repos\proj\proj
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
Run Code Online (Sandbox Code Playgroud)
在 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;
}
Run Code Online (Sandbox Code Playgroud)
注意:即使这可能并不总是有效,尤其是在存在病毒检查程序的情况下,这些程序可能在您调用 remove 之前打开了您的文件。
| 归档时间: |
|
| 查看次数: |
1615 次 |
| 最近记录: |