Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将文件保存在android的外部目录中。_Android - Fatal编程技术网

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

无法将文件保存在android的外部目录中。,android,Android,在android中,如何将文件写入所需文件夹的外部目录。 我使用了下面的编码,但它似乎不起作用 File r = Environment.getExternalStorageDirectory(); File oD = new File(root.getAbsolutePath() + File.separator + "web_dir"); if (!outDir.isDirectory()) { outD

在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所说,您可能缺少正确的许可。将以下内容作为标记的子项添加到清单中:


首先确保您在清单文件中有写入外部存储的权限

<!-- Depends on your requirements -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_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);
}
希望对您有所帮助。

您在清单中是否具有写入外部存储权限?此外,您的文件对象标识符可能不一致。你有r和root。
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);
}