【问题标题】:File.exists() returns false for existing fileFile.exists() 为现有文件返回 false
【发布时间】:2015-05-05 16:11:03
【问题描述】:

我正在尝试检查用户的下载目录中是否存在文件。

File imageFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),imageName);
if(imageFile.exists())
  // Do something
else
  // Do something else

我已经拿到了目录的内容

File did = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS));
File files[] = dir.listFiles();

在调试器中:

imageFile.path = "/storage/emulated/0/Download/floorplan_lobby.png"

files[12].path = "/storage/emulated/0/Download/floorplan_lobby.png"

但是imageFile.exists() 返回错误。为什么?

没关系,但我用的是三星 Galaxy Note。

【问题讨论】:

  • 我曾经访问过这样的文件File file = new File(Environment.getExternalStorageDirectory() + "/Folder/Folder/Folder/file.jpg");
  • 该文件是如何到达那里的?文件管理器应用程序可以打开它进行查看吗?可能存储仿真处于不一致状态,需要通过调用媒体扫描器或重新启动设备来刷新。
  • 该文件是使用 Android 文件传输应用添加的。文件管理器可以打开文件。我已经重启了设备。没有帮助。
  • 2 年过去了,但你有没有追根究底?
  • 你能解决这个问题吗?

标签: android file-exists


【解决方案1】:

检查

  1. 清单权限
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  1. 使用文件提供程序创建和访问文件
    <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="your_package.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_list" />
        </provider>
  1. file_list 内容:
    <?xml version="1.0" encoding="utf-8"?>
    <paths>
        <external-path
            name="external"
            path="." />
        <external-files-path
            name="external_files"
            path="." />
        <cache-path
            name="cache"
            path="." />
        <external-cache-path
            name="external_cache"
            path="." />
        <files-path
            name="files"
            path="." />
    </paths>
  1. 保持文件名简短

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 2012-10-22
    相关资源
    最近更新 更多