即使文件不存在,File.exists()方法也始终返回true

时间:2018-04-14 08:45:12

标签: java android android-file

我试图通过检查用户即将下载的文件是否已经存在来限制重复下载,然后再继续下载。 我使用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。

2 个答案:

答案 0 :(得分:1)

你可以在这里查看几件事

首先按预期我们获得了读取和写入存储介质的权限。

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

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

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

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

答案 1 :(得分:0)

new File(Environment.DIRECTORY_DOWNLOADS, "/" + playlistTitle 

这只能导致一条不可能的道路。

你应该使用

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