Java canRead()和canWrite()都返回false

Java canRead()和canWrite()都返回false,java,android,file,file-permissions,Java,Android,File,File Permissions,不知何故,我不能读或写文件。我正在使用以下命令获取文件名。这对大多数人来说可能是显而易见的,但我的Java有点弱 private String fileName(int itemNum) { final String DIR_PREFIX = "/MyDailySelfiesDir"; final String FILENAME_PREFIX = "/MyDailySelfieFile_"; File dir_0 = Environment.getExternalStor

不知何故,我不能读或写文件。我正在使用以下命令获取文件名。这对大多数人来说可能是显而易见的,但我的Java有点弱

private String fileName(int itemNum) {
    final String DIR_PREFIX = "/MyDailySelfiesDir";
    final String FILENAME_PREFIX = "/MyDailySelfieFile_";
    File dir_0 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    String dirName = dir_0.getAbsolutePath() + DIR_PREFIX;
    File dir = new File(dirName);
    dir.mkdirs();
    String name = dirName + FILENAME_PREFIX + itemNum + ".jpg";
    File temp = new File(name);
    Log.i(TAG, name + " can read? " + temp.canRead() + " can write? " + temp.canWrite());
    return name;
}
AndroidManifest.xml部分如下所示:

<uses-sdk
    android:minSdkVersion="18"
    android:targetSdkVersion="19" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


我在Android Studio中,模拟Galaxy Nexus 5,API 18。

尝试检查yourFile.exists()的值。除非您没有发布所有代码,否则您永远不会在设备上实际创建文件“temp”-您只创建了一个文件对象。因此,如果文件对象没有映射到Android文件系统中的真实文件,则无法读取或写入该文件对象。。可以使用file.createNewFile()创建文件。

尝试检查文件.exists()的值。除非您没有发布所有代码,否则您永远不会在设备上实际创建文件“temp”-您只创建了一个文件对象。因此,如果文件对象没有映射到Android文件系统中的真实文件,则无法读取或写入该文件对象。。您可以使用file.createNewFile()创建一个文件。

修复Chamatake san。谢谢,那是查马塔克山。非常感谢。