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

Java 目錄操作實戰:列出檔案與移動目錄的完整工具類實作

     編輯:Java 相關知識

提供一個開箱即用的 Java 目錄操作工具類,支援列出指定目錄下所有檔案/子目錄,以及將目錄移動至新位置(自動建立目標目錄)。代碼採用標準 java.io.File API,處理路徑邊界條件,適合作為檔案管理模組的基礎組件。

核心功能

  • 目錄列表:DirList(String pathName) 返回字串陣列,空路徑預設為當前目錄
  • 目錄移動:DirMove(String src, String dest) 移動整個目錄樹,目標不存在自動建立

完整原始碼


import java.io.*;
public class Dir {
    // 列出目錄內容
    public String[] DirList(String pathName) {
        try {
            File path = pathName.equals("") ? new File(".") : new File(pathName);
            if (!path.isDirectory()) return null;
            return path.list();
        } catch (Exception e) {
            System.err.println(e);
            return null;
        }
    }
    // 移動目錄
    public boolean DirMove(String src, String dest) {
        try {
            File srcDir = new File(src);
            if (!srcDir.isDirectory()) return false;
            File destDir = new File(dest);
            if (!destDir.isDirectory()) destDir.mkdirs(); // 自動建立目標目錄
            // renameTo 移動目錄(同檔案系統有效,跨檔案系統會失敗)
            boolean success = srcDir.renameTo(new File(destDir, srcDir.getName()));
            if (!success) System.out.println("Move failed!");
            return success;
        } catch (Exception e) {
            System.out.println(e);
            return false;
        }
    }
    // 命令列測試入口
    public static void main(String[] args) {
        Dir d = new Dir();
        if (args.length == 0) return;
        String cmd = args[0];
        if (cmd.equals("list") && args.length == 2) {
            String[] files = d.DirList(args[1]);
            if (files != null) for (String f : files) System.out.println(f);
        } else if (cmd.equals("move") && args.length == 3) {
            d.DirMove(args[1], args[2]);
        }
    }
}

關鍵實作細節

場景處理方式
路徑為空預設 new File(".") 當前目錄
來源非目錄直接返回 false/null
目標目錄不存在mkdirs() 遞迴建立
跨檔案系統移動renameTo() 會失敗,建議改用「複製+刪除」策略
異常處理捕獲並列印錯誤,返回失敗指示,不拋出受檢異常

使用範例


// 列出目錄
String[] items = new Dir().DirList("/home/user/docs");
for (String item : items) System.out.println(item);

// 移動目錄
boolean ok = new Dir().DirMove("/tmp/source_dir", "/backup/target_dir");
System.out.println("Move " + (ok ? "success" : "failed"));

進階擴展建議

  1. 支援檔案過濾(File.list(FilenameFilter))
  2. 遞迴列出子目錄樹(Files.walk() NIO.2 更簡潔)
  3. 跨檔案系統移動改用 Files.move(REPLACE_EXISTING, ATOMIC_MOVE)
  4. 加入進度回調、日誌記錄、權限保留選項
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved