簡體   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