无法解码流:java.io.FileNotFoundException

时间:2016-01-04 07:29:21

标签: java android

我正在关注此教程:TUT

tut是关于通过网址下载图片并显示进度条。

我已经逐行使用了教程中的所有代码。但由于某些原因,我在下载图像时出现此错误。

function toolbar_section()
{
    $user = new User();
    global $variables;
    $variables['menu_buttons'] = array(
        'home' => array(
            'title' => 'Pocetna',
            'href' => 'index.php',
            'show' => true,
        ),
        'profile' => array(
            'title' => 'Profil',
            'href' => 'index.php?action=profile&user='.escape($user->data()->username).'',
            'logged' => true,
        ),
        'logout' => array(
            'title' => 'Odjava',
            'href' => 'index.php?action=logout',
            'logged' => true,
        ),
    );
}

我已将persmissons添加到清单文件中。所以我不明白为什么它显示E/Error:﹕ /sdcard/downloadedfile.jpg: open failed: EACCES (Permission denied) Unable to decode stream: java.io.FileNotFoundException: /storage/sdcard/downloadedfile.jpg: open failed: EACCES (Permission denied)

2 个答案:

答案 0 :(得分:0)

表示路径时请不要硬编“/ sdcard /”。根据制造商可能会有所变化。为安全起见,您必须使用,

Environment.getExternalStorageDirectory().getAbsolutePath()

例如,

您可以按照以下方式使用它,

String storageDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "downloadedfile.jpg";
File imageFile= new File(storageDir+fileName);
OutputStream output = new FileOutputStream(imageFile);

另外不要忘记添加在清单中写入外部存储目录的权限,

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

答案 1 :(得分:0)

这是由于未添加在外部存储上写入数据所需的权限而导致的权限错误。

 E/Error:﹕ /sdcard/downloadedfile.jpg: open failed: EACCES (Permission denied)

您可以添加

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

在你的清单中避免这样的错误。