简体   繁体   中英

unable to save the file in the external directory in android.

In android, how to write the file in the external directory in the desired folder. i have use the following coding, but it doesn't seems to work.

File r = Environment.getExternalStorageDirectory();
        File oD = new File(root.getAbsolutePath() + File.separator +  "web_dir");                 
        if (!outDir.isDirectory()) {
          outDir.mkdir();
        }
        try {
          if (!outDir.isDirectory()) {
            throw new IOException(
                "Unable to create directory");
          }
          File outputFile = new File(outDir, "web_file");
          BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile));
          writer.write(new String("hello"));
          Toast.makeText(context.getApplicationContext(),
          "Successfully saved to: " + outputFile.getAbsolutePath(),
           Toast.LENGTH_LONG).show();
          writer.close();
        } catch (IOException e) {
          Log.w("et", e.getMessage(), e);
          Toast.makeText(context, e.getMessage() + " Unable to write to external"
            +"storage.", Toast.LENGTH_LONG).show();
        }

What's the error message? As Mike said, your are probably missing the correct permission. Add the following to your manifest, as a child of the <manifest> tag:

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

First make sure you have permission in your manifest file to write external storage.

<!-- Depends on your requirements -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Ref: Saving Files - Android Developer Doc

below is the sample code to write file to external storage.

private void writeToSDFile(){

    // Find the root of the external storage.
    // See http://developer.android.com/guide/topics/data/data-  storage.html#filesExternal

    File root = android.os.Environment.getExternalStorageDirectory(); 
    tv.append("\nExternal file system root: "+root);

    // See http://stackoverflow.com/questions/3551821/android-write-to-sd-card-folder

    File dir = new File (root.getAbsolutePath() + "/download");
    dir.mkdirs();
    File file = new File(dir, "myData.txt");

    try {
        FileOutputStream f = new FileOutputStream(file);
        PrintWriter pw = new PrintWriter(f);
        pw.println("Hi , How are you");
        pw.println("Hello");
        pw.flush();
        pw.close();
        f.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        Log.i(TAG, "******* File not found. Did you" +
            " add a WRITE_EXTERNAL_STORAGE permission to the   manifest?");
    } catch (IOException e) {
        e.printStackTrace();
    }   
    tv.append("\n\nFile written to "+file);
}

Hope it will help you..

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM