2017-08-30 28 views
0

我遇到java.io.FileNotFoundException的問題。有時候我會得到這個例外,有時候不會。我不知道爲什麼,因爲指定的文件存在。我認爲該文件可能會被另一個應用程序或系統使用。如何避免FileNotFoundException?如何檢查Android中是否存在/存在文件?

如何知道文件何時存在/可讀取/寫入?

謝謝。

錯誤日誌:

IOKt錯誤java.io.FileNotFoundException:/storage/emulated/0/Android/data/com.android.vending/files/20170321_161318.txt:打開失敗:ENOENT(沒有這樣的文件或目錄)

回答

0

結賬File.exists()。但是你的代碼應該能夠處理FileNotFoundException。另外,你應該真正調查爲什麼你首先得到它(也許異常的消息將包含一個線索),因爲它可能是由你的代碼中的錯誤引起的。

+0

我使用Okio檢索文件源。 Okio.source(文件)。我在那裏得到了例外。 –

+0

您是否嘗試使用[File.exists()](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#exists())?您也可以使用[File.canRead()](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#canRead())和[File.canWrite()] (https://docs.oracle.com/javase/7/docs/api/java/io/File.html#canWrite())來檢查權限。 – drake

+0

我有,但是當我使用這些圖標時,系統會將很多文件標記爲我以前傳輸的無效文件。所以它不好。 –

0

FileNotFoundException文件解釋說:

此異常將由{的FileInputStream @link}拋出{@link FileOutputStream中}和{@link的RandomAccessFile}構造函數當一個文件 與指定路徑名不存在。 如果文件確實存在但由於某種原因無法訪問,則這些構造函數也會被這些 拋出,例如,當嘗試打開用於寫入的只讀文件時的示例爲 。

所以你應該確保你有文件的權限,如canRead(),在java.io.FilecanWrite()方法。

+0

我有<使用權限android:name =「android.permission.READ_EXTERNAL_STORAGE」/> <使用權限android:name =「android.permission.WRITE_EXTERNAL_STORAGE」/> –

+0

@RaulTunduc我不擅長android,但你可以使用'canRead'和'canWrite'來確定文件權限。 – dabaicai

+0

我在提供程序中使用過,有太多標籤爲「無效」的文件,但這些文件都可以,因爲我之前已將它們轉移過來 –

相關問題