C++读文件时文件不存在和写文件时文件已存在的判断

gunziyang 2010-06-16 09:18:41
我使用了以下代码,但是无论程序目录下是否存在test.dat,它都直接新建一个test.dat,也就是说无法判断原来文件是否存在。

另外,我用了ios::nocreate或ios::noreplace,连编译也通不过。

求高手指点如何判断文件原来是否存在


#include <fstream>
#include <iostream>
using namespace std;

int main()
{
int i,a[5];

ofstream testFile;
testFile.open("test.dat");
if(!testFile)
{
cout<<"文件不存在"<<endl;
return;
}

for(i=0;i<5;i++)
testFile<<i<<" ";
testFile.close();

return 0;
}
...全文
443 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cattycat 2010-06-16
  • 打赏
  • 举报
回复
c语言的fopen打开的方式可以判断文件是否存在。
另外,这种方式可以
fstream f("a.t.txt");
if(f.fail())
cout<<"file not exist!"<<endl;
liutengfeigo 2010-06-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mstlq 的回复:]

引用楼主 gunziyang 的回复:

求高手指点如何判断文件原来是否存在

不想用api的话,就先用一个ifstream试试看能否打开……
能打开就存在,否则不存在……
[/Quote]
UPUP
jcwKyl 2010-06-16
  • 打赏
  • 举报
回复
有access,fstat等api可用。或者如1楼说的,先打开一下试试,能打开说明文件已经存在,否则不存在。或者你把目录下的所有文件名都列出来,在其中看是否能找到你想找的文件名。
mstlq 2010-06-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 gunziyang 的回复:]

求高手指点如何判断文件原来是否存在
[/Quote]
不想用api的话,就先用一个ifstream试试看能否打开……
能打开就存在,否则不存在……
gunziyang 2010-06-16
  • 打赏
  • 举报
回复
感谢二楼和三楼,最后我还是采用access()来判断文件是否存在了,如下:

#include <io.h>
#include <iostream>
using namespace std;
int main()
{
if(access("test.dat",0)==0)
cout<<"文件存在"<<endl;
else
cout<<"文件不存在"<<endl;

return 0;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧