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

Java 實作檔案複製、移動與刪除完整範例

     編輯:Java 相關知識

Java 檔案操作工具類:複製、剪貼、刪除一站式解決

在 Java 開發中,檔案與目錄的基本操作(複製、移動、刪除)是高頻需求。雖然 JDK 7+ 提供了 Files.copy 等現代 API,但理解基於流的傳統實作有助於掌握底層原理,且在舊版本環境或特殊定制場景下仍具參考價值。本文提供一個功能完整、考慮邊界情況的 FileOperateDemo 工具類,支援檔案與目錄的遞歸處理、覆蓋控制、同源檢測等實用特性。

核心功能設計

  • 統一入口:copyGeneralFile(src, dest) 自動判斷來源是檔案還是目錄,委派給對應處理邏輯。
  • 檔案複製:採用 1KB 緩衝區流式讀寫,避免大檔案記憶體溢位;支援 overwriteExistFile 參數控制是否覆蓋同名檔案。
  • 目錄複製:遞歸遍歷子項,逐個複製檔案與子目錄;空目錄直接標記成功;同樣支援覆蓋控制。
  • 刪除操作:deleteFile(path) 僅刪除單層檔案或空目錄,非遞歸刪除,較安全。
  • 剪貼(移動):cutGeneralFile 組合「複製成功 + 刪除來源」實現原子性移動。

關鍵細節與防坑指南

// 1. 防止來源與目標路徑相同導致無限遞歸或資料覆蓋
if (destFile.getAbsolutePath().equals(srcFile.getAbsolutePath())) return false;

// 2. 目標目錄不存在時自動建立(mkdirs)
File destFileDir = new File(destDir);
if (!destFileDir.exists() && !destFileDir.mkdirs()) return false;

// 3. 目錄複製時檢測「目標是否包含於來源」以防循環
if (destDir.contains(srcPath)) return false;

// 4. 流關閉採用 try-catch-finally 確保資源釋放(JDK 7+ 建議改用 try-with-resources)

測試場景覆蓋

main 方法展示了豐富的測試用例:正常複製、來源不存在、同目錄複製、覆蓋與不覆蓋模式、目標目錄無法建立、目錄遞歸複製、刪除操作等,可直接作為驗收標準。

現代化建議

生產環境建議優先使用 java.nio.file.Files:

// 檔案複製(支援原子移動、屬性保留)
Files.copy(srcPath, destPath, StandardCopyOption.REPLACE_EXISTING);
// 目錄遞歸複製需配合 Files.walkFileTree
// 移動:Files.move(src, dest, StandardCopyOption.ATOMIC_MOVE)

但本範例的流式處理邏輯、邊界檢查思路在自定義加密、壓縮、異步複製等擴展場景下仍具啟發意義。

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