如何确保文件存在并且已打开

How to make sure file exists and it is opened

我正在尝试制作一个程序来检查文件是否存在,否则它会创建并打开它。这是我尝试做的:

fstream file("data.txt");
if (!file.is_open())
{
    ofstream file("data.txt");
    file.close();
}
fstream file("data.txt");

程序尝试打开 data.txt 文件,如果它不存在,它会创建它,但它是本地的,所以我必须在 main 函数中关闭并打开它。如果文件已经存在,我会收到多实例错误。 我尝试在打开文件之前关闭它,但它仍然给我同样的错误。代码:

fstream file("data.txt");
if (!file.is_open())
{
    ofstream file("data.txt");
    file.close();
}
file.close();
fstream file("data.txt");

还有比这更好的方法吗? 谢谢你的时间=) (是的,我在问之前已经搜索了答案。)

简单的创建一个文件流,不指定不告诉打开哪个文件。

fstream file;
file.open("data.txt");

然后用.fail()检查是否FAILED打开文件

if (fileStream.fail()) 
{
    ofstream file("data.txt");
}
file.open("data.txt");

然后再打开。 fstream (Filestream) 只是 iostream 的子级,不需要初始化,可以声明你可以阅读更多关于它的信息 here

这也是 c 和 POSIX - 也许它很有趣,因为它可以快速方便地检查文件是否存在。

#include <unistd.h>
if(access(filename, F_OK ) == 1) // file exists
...