【问题标题】:File.exists() Method always returns true even when the file doesn't existFile.exists() 方法总是返回 true,即使文件不存在
【发布时间】:2018-09-24 13:19:14
【问题描述】:

我试图通过在继续下载之前检查用户要下载的文件是否已经存在来抑制重复下载。 我使用方法 File.exists() 来检查这种情况,但它似乎总是返回 true。 以下是我的代码:

            File destination = new File(Environment.DIRECTORY_DOWNLOADS, "/" + playlistTitle + "/" + image.getImgTitle() + ".jpg");
            if (!destination.exists()) {
                downloadId = downloadImage(image.getImgURL(), image.getImgTitle(), playlistTitle);
                downloadIds.add(downloadId);
            }

如果我在创建之前直接转到该文件路径,它似乎是空的,但上面的代码无论如何都会返回 true。

【问题讨论】:

  • 如果你在检查它是否存在之前创建一个新文件,它会一直存在对吗?
  • 谁在创建新文件?

标签: java android android-file


【解决方案1】:

你可以在这里检查几件事

首先我们得到了读写存储介质的权限。

您也尝试使用以下方法检查文件是否可以读取

if (!file.canRead()) {
    return false;
}

如果以上两个都不起作用,请使用它。

if (!file.isFile()) {
     //file doesn't exist    
    }else{
    //file exists
}

【讨论】:

    【解决方案2】:
    new File(Environment.DIRECTORY_DOWNLOADS, "/" + playlistTitle 
    

    那只能导致不可能的路径。

    你应该改用

    new File( Environment.getExternalPublicDirectory( 
          Environment.DIRECTORY_DOWNLOADS),......
    

    【讨论】:

    • 我试过了,用getExternalStoragePublicDirectory,还是不行,总是返回true
    • 很不清楚你哪里有问题。如果文件存在,则 File.exists() 将返回 true。
    • 好的,这就是我所面临的,我想下载一个文件,但在下载之前我想先检查它是否在使用 File.exists() 之前下载,如果返回 false 那么我会去提前下载它,否则如果返回true,我会让用户知道文件存在并打开它。问题是文件是否存在它总是返回false
    • new File(Environment.DIRECTORY_DOWNLOADS, "/" + playlistTitle... 那仍然是错误的代码。请使用正确的代码更新您的帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多