繁体   English   中英

无法将文件保存在android的外部目录中。

[英]unable to save the file in the external directory in android.

在android中,如何在所需文件夹的外部目录中写入文件。 我使用了以下编码,但似乎无法正常工作。

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();
        }

错误消息是什么? 正如Mike所说,您可能缺少正确的权限。 将以下内容作为<manifest>标记的子项添加到清单中:

<uses-permission android:name="android.permission.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" />

参考: 保存文件-Android开发者文档

以下是将文件写入外部存储的示例代码。

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);
}

希望对您有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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