首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 寫入 /data/ 目錄失敗:目錄不存在或路徑誤解

     編輯:程式設計疑難解答

代碼:

new FileOutputStream("/data/" + fileName); // 絕對路徑

現象:不報錯,但磁碟無檔案。

可能原因

  1. /data 目錄不存在或無寫入權限:Linux/Android 中 /data 需 root 權限,普通使用者無法寫入。
  2. 相對路徑誤以為絕對路徑:去掉 / 後在專案根目錄建立檔案(相對路徑 data/)。

解決方案

  • 確認目錄存在並可寫:
    File dir = new File("/data");
    if (!dir.exists()) dir.mkdirs(); // 需權限
    if (!dir.canWrite()) throw new IOException("無寫入權限");
  • 改用相對路徑或使用者目錄:
    String userDir = System.getProperty("user.dir"); // 專案根目錄
    File out = new File(userDir, "data/" + fileName);
    out.getParentFile().mkdirs(); // 確保父目錄存在
  • Android 專用:用 Context.getFilesDir()、getExternalFilesDir() 取得合法儲存路徑。

最佳實務

「絕對路徑 /data 在伺服器/容器中通常不可寫」,優先使用相對路徑或系統提供的臨時/應用目錄。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved