huangliniqng
黄林晴
采纳率20%
2019-04-25 17:37 阅读 1.5k

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

5

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • zhenhuax 守love唯诺 2019-04-25 19:05

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

    点赞 1 评论 复制链接分享
  • honey_babay R助手 2019-04-25 17:58

    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 }

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2019-04-26 00:54
    #include <windows.h>
    
    WIN32_FIND_DATA fdt;
    HANDLE hFile = FindFirstFile(stringPackageName,, &fdt);
    if (hFile != INVALID_HANDLE_VALUE)
    {
        file = fopen(stringPackageName, "rt");
            ...
    }
    
    点赞 评论 复制链接分享

相关推荐