Java 在外部存储器上创建文件时出现不同的异常

Java 在外部存储器上创建文件时出现不同的异常,java,android,file,permissions,android-external-storage,Java,Android,File,Permissions,Android External Storage,在非应用程序特定文件夹的外部存储上创建文件时,我收到不同的崩溃。这段代码对大多数用户来说都很好,但对某些用户来说却失败了。创建文件时,我使用了大约以下代码: public static boolean isExternalStorageAvailable() { String state = Environment.getExternalStorageState(); return (Environment.MEDIA_CHECKING.equals(state) || Envi

在非应用程序特定文件夹的外部存储上创建文件时,我收到不同的崩溃。这段代码对大多数用户来说都很好,但对某些用户来说却失败了。创建文件时,我使用了大约以下代码:

public static boolean isExternalStorageAvailable() {
    String state = Environment.getExternalStorageState();
    return (Environment.MEDIA_CHECKING.equals(state) || Environment.MEDIA_MOUNTED.equals(state));
}

public File getTargetDirectory() {
    File root = Environment.getExternalStorageDirectory();
    File directory = new File(root, "DIRECTORY");
    directory.mkdirs();
    return directory;
}

public static void createFile() {
    if (isExternalStorageAvailable()) {
        File file = new File(getTargetDirectory(), "filename.dat");
        if (file.exists())
            file.delete();
        file.createNewFile();
        //other code...
    }
}
我在AndroidManifest.xml中拥有以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
这些异常发生在运行不同OS版本的不同Android设备上。这个文件夹基本上是一个下拉式文件夹,应用程序在其中写入数据,供用户传输到不同的设备。所以用户可以从他的电脑上复制这个文件夹


这可能是某种只读权限问题吗?

您没有在清单中设置读写权限file@shayanpourvatan,谢谢你注意到了。更新问题。这种情况只发生在某些用户身上。我有以下权限。
libcore.io.ErrnoException: open failed: EACCES (Permission denied)
1   libcore.io.Posix.open   
2   libcore.io.BlockGuardOs.open    BlockGuardOs.java, line 110
3   java.io.File.createNewFile  File.java, line 941

libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
1   libcore.io.Posix.open   
2   libcore.io.BlockGuardOs.open    BlockGuardOs.java, line 110
3   java.io.File.createNewFile