Android - 下载文件,java.io.FileNotFoundException

时间:2012-02-03 04:09:29

标签: android io

我可能会离开这里,但我正在尝试下载文件并将其存储在手机上的下载文件夹中。我收到"java.io.FileNotFoundException"错误,因为该文件不存在,因为我正在尝试下载它...我做错了什么?

String PATH = Environment.getExternalStorageDirectory() + "/download/";
File dir = new File(PATH);
dir.mkdirs();

File outputFile = new File(dir, "downloadFile");
FileOutputStream fos = new FileOutputStream(outputFile);

此操作失败,具有以下内容:

java.io.FileNotFoundException: /mnt/sdcard/download/downloadFile (Permission denied)

我正在使用WRITE_EXTERNAL_STORAGE and READ_EXTERNAL_STORAGE权限....

3 个答案:

答案 0 :(得分:2)

请尝试按照更新的代码

String PATH = Environment.getExternalStorageDirectory() + "/download";
        File dir = new File(PATH);
        dir.mkdirs();

        File outputFile = new File(dir, "downloadFile");
        if ( !outputFile.exists() ) 
        {
             outputFile.create();
        }
        FileOutputStream fos = new FileOutputStream(outputFile);

下载后有一个“/”。这样Android就会认为您正在创建递归目录。使用mkdirs()时,无法创建递归目录。

您还可以在Java ME here中查看我的答案。

答案 1 :(得分:0)

在这里你要做directoy? 已经有下载文件夹而不是直接使用此代码。

// create a File object for the parent directory
File Directory = new File("/sdcard/download/");

Directory.mkdirs();
// create a File object for the output file
File outputFile = new File(Directory, downloadFile);
// now attach the OutputStream to the file object, instead of a String representation
FileOutputStream fos = new FileOutputStream(outputFile);

使用Environment.getExternalStorageDirectory()来获取“SD卡”目录可能是明智的,因为这可能会改变

答案 2 :(得分:0)

添加Permission以在Manifest文件中写入外部存储器。

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