Android之android.system.ErrnoException: open failed: ENOENT (No such file or directory)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011068702/article/details/81780363

1 问题

在sdcard目录下面创建了一个文件提示下面的错误

android.system.ErrnoException: open failed: ENOENT (No such file or directory)

2 分析

错误代码是如下

        String path = Environment.getExternalStorageDirectory().getAbsolutePath();
        try {
            File dir = new File(path + "/***/***/***/");
            if (!dir.exists()) {
                dir.mkdir();
            }
            File file = new File(path + "/***/***/***/", fileName);
            if (file.exists()) {
                return file;
            }
            if (file.createNewFile()) {
                return file;
            }
        } catch (Exception e) {
            return null;
        }
        return null;
    }

但是部分地方能正确运行

        String path = Environment.getExternalStorageDirectory().getAbsolutePath();
        try {
            File dir = new File(path + "/***/***/");
            if (!dir.exists()) {
                dir.mkdir();
            }
            File file = new File(path + "/***/***/", fileName);
            if (file.exists()) {
                return file;
            }
            if (file.createNewFile()) {
                return file;
            }
        } catch (Exception e) {
            return null;
        }
        return null;
    }

特么权限肯定没问题,提示上面鸟错误,说创建文件失败,原来是我mkdir搞错了,

mkdir只能创建一级目录,上面正常用mkdir,是因为前面的目录已经创建好了,所以/***/***/没毛病

mkdirs能创建多级目录,把上面的创建多级目录的mkdir改成mkdirs函数就可以了

猜你喜欢

转载自blog.csdn.net/u011068702/article/details/81780363
今日推荐