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

Java 實現簡易 FTP 客戶端(九):本地文件管理模塊詳解

     編輯:Java 相關知識

模塊功能概覽

本地文件面板提供類似文件管理器的交互:列表顯示、刷新、新建文件夾、刪除、重命名。採用 Swing JTable 展示,數據模型為 DefaultTableModel。

核心功能實現

1. 文件列表加載 listLocalFiles(File dir)

  • 清空模型,添加 . (當前目錄) 和 .. (父目錄) 虛擬項
  • 遍歷 dir.listFiles(),構造 DiskFile 封裝對象
  • 文件大小人性化顯示:B / KB / MB / GB 自動換算
  • 目錄顯示 <DIR>,不可讀文件顯示「未知」
  • 最後修改時間用 Date.toLocaleString() 本地化

2. 刷新機制 refreshCurrentFolder()

  • 獲取當前目錄 getCurrentFolder()
  • 在 **EDT (Event Dispatch Thread)** 中異步重載:SwingUtilities.invokeLater(() -> listLocalFiles(dir))
  • 避免長時間 I/O 阻塞 UI,保持界面響應

3. 新建文件夾 CreateFolderAction

  • JOptionPane.showInputDialog 獲取名稱
  • 判斷當前選中行:若選中文件則在其父目錄創建,否則在當前路徑創建
  • File.mkdir() 創建,重名檢查與結果彈窗提示
  • 成功後調用 refreshFolder(parent) 更新視圖

4. 刪除操作 DelFileAction(遞歸刪除 + 後台線程)

  • 確認對話框 JOptionPane.showConfirmDialog
  • 新建線程執行遞歸刪除 delFile(File):
    • 文件直接 delete()
    • 目錄先遞歸刪除子項,再刪除自身
    • 異常捕獲並記錄日誌
  • 完成後在 EDT 中刷新父目錄並彈窗「刪除成功」

5. 重命名 RenameAction

  • 獲取選中行的 File 對象
  • JOptionPane.showInputDialog 輸入新名(預填舊名)
  • file.renameTo(new File(parent, newName))
  • 刷新父目錄視圖

關鍵設計模式

  • Command 模式:每個操作封裝為 Action 子類 (RefreshAction, CreateFolderAction 等),解耦 UI 與業務邏輯
  • Swing 線程規範:耗時操作放入工作線程,UI 更新回 EDT (SwingUtilities.invokeLater)
  • 模型-視圖分離:DefaultTableModel 持有數據,JTable 僅負責渲染

代碼片段:遞歸刪除


private void delFile(File file) {
    try {
        if (file.isFile()) {
            if (!file.delete()) showError(file + " 無法刪除");
        } else if (file.isDirectory()) {
            File[] children = file.listFiles();
            if (children != null) for (File c : children) delFile(c);
            if (!file.delete()) showError(file + " 目錄無法刪除");
        }
    } catch (Exception ex) { logger.log(Level.SEVERE, null, ex); }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved