我正在开发一个Android应用程序,我在其中将pdf文件从Internet下载到外部目录。 我在很多方面尝试过,但总是有错误。 我在下面连续列出了我的代码错误:
1
String fname=title+".pdf";
loc="/sdcard"+"/"+fname;
output=new FileOutputStream(loc);
错误:
BookActivity(1255): /sdcard/Pragmatic Unit Testing in Java with JUnit.pdf: open failed: EACCES (Permission denied)
2
File outputdir=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
String fname=title+".pdf";
loc=outputdir.getAbsolutePath()
output=new FileOutputStream(loc);
错误: BookActivity(1172):用于PHP Developers.pdf的/storage/sdcard/Download/Node.js:打开失败:ENOENT(没有这样的文件或目录)
我在AndroidManifest.xml文件中拥有此权限:
<!-- Permission: Allow Connect to Internet -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Permission: Writing to SDCard -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
请帮我解决怎么办? 另外,如果可以请告诉我如何在内部存储中保存公共文件。
也尝试了https://stackoverflow.com/a/7887114/964741
的答案但又是恐怖:
BookActivity(1319): /storage/sdcard/Apache Axis2 Web Services, 2nd Edition.pdf: open failed: EACCES (Permission denied)
答案 0 :(得分:1)
在第一个错误中你使用了错误的路径(我猜)。由于4.4版本(我不确定),他们改变了访问外部设备的方式。
你应该写:
String fname=title+".pdf";
loc="/mnt/media_rw/sdcard"+"/"+fname;
output=new FileOutputStream(loc);
我认为这是正确的方式。
我在清单文件中定义了这样的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
我希望它有所帮助。
答案 1 :(得分:1)
1&GT;要将数据文件写入SD卡: -
private void writeTextFileToSdcard(File fileObj, String fileName, String fileData) {
fileObj.mkdirs();
File file = new File(fileObj, fileName);
if (file.exists())
file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
OutputStreamWriter myOutWriter = new OutputStreamWriter(out);
myOutWriter.append(fileData);
myOutWriter.close();
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
2 - ;要将图像写入sdacrd: -
private void writeImageFileToSdcard(Bitmap finalBitmap) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/My_Images");
myDir.mkdirs();
String fname = "Image1.jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
许可是强制性的
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>