我可能会离开这里,但我正在尝试下载文件并将其存储在手机上的下载文件夹中。我收到"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
权限....
答案 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"/>