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

Java Socket 傳輸資料夾路徑:判斷存在與建立目錄的標準做法

     編輯:程式設計疑難解答

在 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"));

注意事項

  • 路徑分隔符: Windows 使用 \\,Linux/Mac 使用 /。建議用 File.separator 或 Paths.get(...) (NIO.2) 處理跨平台相容性。
  • 權限問題: 執行身分需具備目標磁碟的寫入權限。
  • 競態條件: 多執行緒環境下,exists() 與 mkdirs() 之間可能有其他執行緒建立同目錄,但 mkdirs() 本身是冪等的,重複呼叫不會拋出例外。
  • 安全性: 嚴格驗證傳入路徑,防止目錄遍歷攻擊(如 ../../etc/passwd),建議正規化路徑並限制在允許的根目錄下。

NIO.2 現代寫法 (Java 7+)

Path path = Paths.get(filePath);
Files.createDirectories(path); // 自動建立多層、拋出例外若失敗

使用 Files.createDirectories 程式碼更簡潔、例外資訊更豐富,是新專案的推薦做法。

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