如何将输入流中的对象存储到android下的sdcard下的特定文件夹中?

时间:2013-11-22 07:41:42

标签: android

我从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。但我无法存储在文件夹中。谢谢你的帮助!

1 个答案:

答案 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" />