c++ fopen 文件夹路径不存在异常问题

1问题描述:
使用fopen去打开某个目录,这个目录可能会随时被删除,比如用户卸载了软件对应的目录消失,
所以就是用fopen去打开这个目录
file = fopen(stringPackageName, "rt");
原本想的时 当file为NULL的时候说明文件夹路径不存在也就是用户已经卸载了,
但是没想到当不存在的时候fopen直接异常了
stringPackageName是安装包的生成文件的路径,这里是
/data/data/jnidemo.hlq.com.jnidemo/

Error getting package:jnidemo.hlq.com.jnidemo
android.content.pm.PackageManager$NameNotFoundException: jnidemo.hlq.com.jnidemo

1 #include
2 #include
3
4 using namespace std;
5

6 #define FILENAME "*.dat" // 指定文件名
7
8 int main( void )
9 {
10 fstream _file;
11 _file.open(FILENAME, ios::in);
12 if(!_file)
13 {
14 cout<<FILENAME<<"没有文件!"<<endl;
15 }
16 else
17 {
18 cout<<FILENAME<<"已经存在!"<<endl;
19 }
20
21 cin.get();
22 return 0;
23 }

fopen之前使用access判断下文件是否存在:
if (0 != access(stringPackageName, F_OK))
{
std::cout << "文件不存在" << std::endl;
return -1;
}

#include <windows.h>

WIN32_FIND_DATA fdt;
HANDLE hFile = FindFirstFile(stringPackageName,, &fdt);
if (hFile != INVALID_HANDLE_VALUE)
{
    file = fopen(stringPackageName, "rt");
        ...
}