2017-12-18 287 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 
} 

記得檢查運行權限,因爲它是一個特殊的權限

相關問題