簡體   English   中英

無法創建文件夾並將文件放入此文件夾

[英]Cannot create a folder and put a file inside this folder

我想創建一個文件夾並將所有生成的文件放在此文件夾中,所以我創建了此方法以在名為MyAppFolder外部存儲中創建目錄,並在此文件夾中放置一個.nomedia文件以避免媒體索引

static String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
static String baseAppDir = "MyAppFolder";
static String fileHider = ".nomedia";

 public static void createFolder() {
        try {

            File mainDirectory = new File(baseDir + File.separator + baseAppDir);
            if (!(mainDirectory.exists())) {
                mainDirectory.mkdirs();
                File outputFile = new File(mainDirectory, fileHider);
                try {
                    FileOutputStream fos = new FileOutputStream(outputFile);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            }
        } catch (Exception exc) {
            System.out.println("ERROR: " + exc.toString());
            exc.printStackTrace();
        }
    }

我正在模擬器上對此進行測試,但是無法正常工作,而且我不知道應該如何解決。

錯誤日志是:

java.io.FileNotFoundException: /storage/sdcard/MyAppFolder/.nomedia: open failed: ENOENT (No such file or directory)
    02-12 20:11:51.758    4899-4899/com.myapp.testapp W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:409)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
    02-12 20:11:51.758    4899-4899/com.myapp.testapp W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
    02-12 20:11:51.758    4899-4899/com.myapp.testapp W/System.err﹕ at com.myapp.testapp.MyFileManager.createFolder(MyFileManager.java:272)

我也嘗試過

  File outputFile = new File(mainDirectory, fileHider);
  if(!outputFile.exists()) {
       outputFile.createNewFile();
  }
  try {
       FileOutputStream fos = new FileOutputStream(outputFile, false);
  } catch (FileNotFoundException e) {
  // TODO Auto-generated catch block
       e.printStackTrace();
  }

同樣的結果

Java FileOutputStream創建文件(如果不存在)表明您應該執行以下操作。 它確實聲明FileOutputStream如果不存在則應該能夠創建,但是如果失敗則將拋出異常,因此最好執行以下操作。 我猜這是一種更有效的方法嗎? 我不知道。 試一試! :-)

File yourFile = new File("score.txt");
if(!yourFile.exists()) {
    yourFile.createNewFile();
} 
FileOutputStream oFile = new FileOutputStream(yourFile, false); 

確保您具有權限

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

您的代碼可以在我的設備上運行。 如果您確實有此權限,則由於我們的Android系統之間的微小差異,您可以嘗試創建隱藏目錄,並在其中創建文件。

static String baseAppDir = ".MyAppFolder";
static String fileHider = "nomedia";

輸入“ ls -a”以檢查是否已真正創建了隱藏文件。 有時不要100%信任異常日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM