【问题标题】:FileNotFoundException when try to upload a image in AsynTask thread尝试在 AsynTask 线程中上传图像时出现 FileNotFoundException
【发布时间】:2014-02-20 12:44:08
【问题描述】:

以下是我在AsynTask 线程中的代码:

File f = new File(Environment.getExternalStorageDirectory()+"/DCIM/IMG_20140210_130057.jpg");
 boolean exist=f.exists(); //debug result exist=false.

此代码触发FileNotFoundException,但文件在那里。

我已经添加了以下权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

【问题讨论】:

  • 尝试打印出您正在构建的文件路径。
  • 尝试添加读取外部存储的权限。
  • 谢谢大家。经过几次尝试。我发现问题出在 AsynTask 中。因为当我在 MainActivity UI 线程中获取文件代码时,file.exists 返回 true。但在 AsynTask 执行中,file.exists 返回 false。怎么会这样?
  • 再次感谢您。我终于得到的问题是,在 AsyncTask 中,将参数从 List 传递到 List 时,将对象转换回 String 时,它会自动添加 [/mnt/sdcard...] ,这会导致 FileNotFound 异常。抱歉耽误您的时间。

标签: android file android-asynctask filenotfoundexception


【解决方案1】:

你忘记调用getAbsolutePath()方法了吗?

试试这个方法,

File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/DCIM/IMG_20140210_130057.jpg");

【讨论】:

  • 试过了,file.exists() 仍然返回 false。谢谢。
  • @cc5zhenhua 您正在测试哪个设备?
  • 你是第一位客人。谢谢。
  • @cc5zhenhua 欢迎您。 :)
【解决方案2】:

使用

File.separator

而不是可能有帮助的“/”字符

【讨论】:

  • 嘿,有时候 .jpg, .jpeg, .JPG 看起来不一样,请确保文件的扩展名
  • 谢谢。我发现在 MAIN 活动线程中,file.exists()return true 但在 AsycnTask 的执行中,file.exists()return false。所以这个问题很有可能与 AsycnTask 相关。
【解决方案3】:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

另外,尝试记录文件路径。

Log.d("Path:",Environment.getExternalStorageDirectory()+"DCIM/IMG_20140210_130057.jpg");

【讨论】:

  • 日志中的路径为:/mnt/sdcard/DCIM/IMG_20140210_130057.jpg。该文件位于同一位置。
猜你喜欢
  • 1970-01-01
  • 2018-04-01
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2018-05-22
相关资源
最近更新 更多