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

Java 判斷檔案是否存在並建立:相對路徑陷阱與絕對路徑解法

     編輯:程式設計綜合問答

問題重現

使用 File file = new File(fileName) 檢查檔案是否存在,若不存在則呼叫 createNewFile()。執行時拋出 java.io.IOException: 系統找不到指定的路徑。

根本原因

傳入的 fileName 為相對路徑,Java 以「當前工作目錄」為基準解析。若工作目錄非預期資料夾,會導致路徑不存在,無法建立檔案。

解決方案

  1. 使用絕對路徑:直接指定完整路徑,如 E:/test.txt。
  2. 動態取得專案根目錄:透過 System.getProperty("user.dir") 取得工作目錄,再拼接相對路徑。
  3. 確保父目錄存在:呼叫 file.getParentFile().mkdirs() 建立多層目錄。

完整程式碼範例

import java.io.*;

public class FileUtil {
    public static void saveFile(String fileName, String content) throws IOException {
        File file = new File(fileName);
        // 確保父目錄存在
        File parent = file.getParentFile();
        if (parent != null && !parent.exists()) {
            parent.mkdirs();
        }
        if (!file.exists()) {
            System.out.println("檔案不存在,建立中...");
            file.createNewFile();
        }
        try (FileOutputStream fos = new FileOutputStream(file, true);
             OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
             BufferedWriter bw = new BufferedWriter(osw)) {
            bw.write(content);
            bw.newLine();
            bw.flush();
            System.out.println("寫入成功!");
        }
    }

    public static void main(String[] args) throws IOException {
        // 使用絕對路徑或動態路徑
        String path = System.getProperty("user.dir") + "/data/test.txt";
        saveFile(path, "測試內容");
    }
}

注意事項

  • createNewFile() 僅建立檔案,不建立目錄。
  • Windows 路徑分隔符可用 / 或 \\,建議統一用 /。
  • 拋出 IOException 讓呼叫端處理錯誤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved