2017-12-18 252 views
0

我一直在研究一个项目,我将从API获取文件名,并且必须检查文件是否存在于设备中并播放它。如何使用文件名检查(内部/外部存储)中是否存在文件?

我得到Screenshot.jpg来自API的文件名和下的同名文件存在于我的存储。

但是,当我使用的一段代码,我已经返回false。我也检查过其他代码。

public boolean isFilePresent(String fileName) { 
    String path = this.getFilesDir().getAbsolutePath() + "/" + fileName; 
    File file = new File(path); 
    return file.exists(); 
} 

我在哪里出错了?任何帮助将不胜感激!

+0

的可能的复制[如何检查文件是否在Java中存在?(https://stackoverflow.com/questions/1816673/how-do-i-check-if-a-file-exists-in- java) –

+1

尝试打印路径,然后验证它是否存在(通过ssh或在文件浏览器中手动打开它)。 你的支票是正确的,唯一的嫌疑人是错误的路径 – GuyKhmel

+0

那么它不重复!我不知道通过任何方式文件的路径。在上述链接,pathtothefile对 –

回答

1

也许,你做错了什么使用this.getFilesDir()是。

相反,使用Environment.getExternalStorageDirectory().toString()例如,这一切都取决于您的文件。

就像我以前说过,调试它自己,打印(或呈现干杯)与“预期”文件的路径,然后验证它不存在

+2

不需要'toString()'。相反,它可以像这样完成'File file = new File(Environment.getExternalStorageDirectory(),“Screenshot.jpg”);' –

+0

Path是罪魁祸首!谢谢大家! –

0

尝试类似的东西:

public boolean isFilePresent(Context context, String fileName) { 
    File dirFiles = context.getFilesDir(); 

    File[] filesArray = dirFiles.listFiles(); 

    for (File file : filesArray) { 
     if (file.getName().equals(fileName)) { 
      return true; 
     } 
    } 

    return false; 
} 
+0

这并没有帮助我@托马斯玛丽。我再次返回false –

0

使用Environment.getExternalStorageDirectory()你这是怎么得到的文件目录

,那么你将后添加的文件路径,所以你应该做这样的事情

if(!new File(Environment.getExternalStorageDirectory().toString()+"/myFolder/"+"myFile").exist()) 
{ 
// file is not exist 
} 

记得检查运行权限,因为它是一个特殊的权限

相关问题