File.exists()为现有文件返回false

时间:2015-03-04 15:33:49

标签: android file-exists

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

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"

和文件[12] .path =" /storage/emulated/0/Download/floorplan_lobby.png"

但imageFile.exists()返回false。为什么呢?

这不重要,但我使用的是三星Galaxy Note

2 个答案:

答案 0 :(得分:0)

使用:

isFile()

让我知道。

答案 1 :(得分:0)

检查

  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. 文件列表内容:
    <?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. 使文件名简短
相关问题