【问题标题】:How to make sure file exists and it is opened如何确保文件存在并打开
【发布时间】:2020-09-25 01:24:23
【问题描述】:

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

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");

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

【问题讨论】:

标签: c++ fstream


【解决方案1】:

只需创建一个文件流,无需指定而不告诉打开哪个文件。

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

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

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

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

【讨论】:

  • 谢谢,这正是我要找的!
  • 一切都好,只需将我的答案标记为已接受并点赞,以便将来对其他人有所帮助。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-13
    • 2012-12-17
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多