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

Java 建立隱藏檔案:Runtime.exec 呼叫 attrib 與現代 NIO.2 替代方案

     編輯:J2EE

傳統做法:呼叫 Windows attrib 命令

File file = new File("D:\\ddd.ddd");
file.delete();
file.createNewFile();

String cmd = "attrib +H \"" + file.getAbsolutePath() + "\"";
Runtime.getRuntime().exec(cmd);

缺點:平台鎖定 (僅 Windows)、啟動進程開銷大、無回傳碼檢查、路徑含特殊字元易出錯。

現代跨平台做法:Java 7+ NIO.2 Files.setAttribute

Path path = Paths.get("D:\\ddd.ddd");
Files.createFile(path);  // 或 Files.write(...)
Files.setAttribute(path, "dos:hidden", true);  // Windows 隱藏屬性
// Linux/Mac 無「隱藏」屬性,慣例以 "." 開頭檔名視為隱藏
// 跨平台建議:統一用 ".prefix" 命名或維護獨立索引表

關鍵 API 對照

需求Java 6-Java 7+ (NIO.2)
設為隱藏 (Windows)Runtime.exec("attrib +H")Files.setAttribute(path, "dos:hidden", true)
判斷是否隱藏無標準 APIFiles.getAttribute(path, "dos:hidden")
唯讀/系統/封存屬性同上dos:readonly, dos:system, dos:archive

最佳實踐建議

  1. 優先使用 NIO.2,代碼簡潔、可移植、異常可捕獲。
  2. 若必須支援 Java 6,封裝 ProcessBuilder 替代 Runtime.exec,妥善處理路徑轉義與錯誤流讀取。
  3. 跨平台專案建議「約定優於配置」:以 . 開頭檔名統一語義,避免依賴 FS 屬性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved