【问题标题】:canRead() and canWrite() both return falsecanRead() 和 canWrite() 都返回 false
【发布时间】:2015-10-09 12:48:26
【问题描述】:

我无法读取或写入文件。我正在使用以下内容来获取文件名。这对大多数人来说可能是显而易见的,但我的 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。

【问题讨论】:

    标签: java android file file-permissions


    【解决方案1】:

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

    【讨论】:

    • 解决的是茶竹先生。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 2020-07-06
    相关资源
    最近更新 更多