2017-08-30 105 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

我在提供程序中使用过,有太多标签为“无效”的文件,但这些文件都可以,因为我之前已将它们转移过来 –

相关问题