我从Amazon s3获取了一个分配给输入流的对象。我想将输入流对象存储到sdcard中的某个指定路径中。该输入流对象可以是PDF,CSV或任何其他格式。但我必须将所有格式对象存储到sdcard下的文件夹中。我试过这段代码
InputStream inputStreamReceiptObject = objectReceiptFromAmazonS3.getObjectContent();
String strReceiptPathInFolder = "/mnt/sdcard/folder1/folder2/"+objectname.extension;
//其中objectname.extension如下
//例如:如果对象是PDF,那么pdfname.pdf
//例如:如果对象是CSV,那么csvname.csv
try {
File file = new File(Environment.getExternalStorageDirectory().getPath(), "testPdf.pdf");
file.createNewFile(); // Error java.io.IOException occurs in this line
OutputStream fOut;
fOut = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fOut);
oos.writeObject(inputStreamReceiptObject);
oos.close();
System.out.println("added");
// }
} catch (Exception e) {
System.out.println("ERROR "+e.toString());
throw new RuntimeException(e); }
I am receiving an error as "java.io.IOException: open failed: EACCES (Permission denied)"
// Error received in the following line
file.createNewFile();
Android Manifest文件我具有以下权限
我想简单地将输入流对象存储在一个文件夹中。如果对象是pdf,那么我想存储该pdf,如果csv则存储csv。但我无法存储在文件夹中。谢谢你的帮助!
答案 0 :(得分:1)
您{s}卡的shouldn't个硬编码文件路径。
File file = Environment.getExternalStorageDirectory();
但是发生异常是因为您可能忘记向Manifest.xml添加正确的权限
有WRITE_EXTERNAL_STORAGE(授予您读取和写入权限),如果您只需要阅读使用READ_EXTERNAL_STORAGE
使用
获取READ和WRITE权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />