在 Java Socket 檔案傳輸場景中,接收端需根據傳來的路徑字串,在本地端重建相同的目錄結構。核心 API 是 java.io.File 類別。
String filePath = "接收到的路徑字串"; // 例如 "D:/data/user1/docs"
File dir = new File(filePath);
// 1. 判斷路徑是否已存在
if (!dir.exists()) {
// 2. 建立多層目錄(包含父目錄)
boolean created = dir.mkdirs();
if (!created) {
// 處理建立失敗:權限不足、路徑無效、磁碟滿等
throw new IOException("無法建立目錄: " + filePath);
}
}
// 後續可在 dir 下建立檔案輸出流進行寫入
FileOutputStream fos = new FileOutputStream(new File(dir, "filename.ext"));
\\,Linux/Mac 使用 /。建議用 File.separator 或 Paths.get(...) (NIO.2) 處理跨平台相容性。exists() 與 mkdirs() 之間可能有其他執行緒建立同目錄,但 mkdirs() 本身是冪等的,重複呼叫不會拋出例外。../../etc/passwd),建議正規化路徑並限制在允許的根目錄下。Path path = Paths.get(filePath);
Files.createDirectories(path); // 自動建立多層、拋出例外若失敗
使用 Files.createDirectories 程式碼更簡潔、例外資訊更豐富,是新專案的推薦做法。