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

Java File 類完整操作指南:建立、刪除、遍歷、過濾與屬性讀取

     編輯:Java 綜合教學

Java File 類完整操作指南:建立、刪除、遍歷、過濾與屬性讀取

java.io.File 是 Java 操作檔案系統的核心類別,雖然不處理實際資料讀寫,但提供路徑解析、檔案/目錄建立刪除、屬性查詢、目錄遍歷與過濾等功能。本文透過完整範例程式碼,系統示範 File 類的常用操作。

1. 基本路徑與存在性檢查

File file = new File("C:\\Users\\cdlx2016\\Desktop\\file類");
System.out.println("是否存在:" + file.exists());

File file1 = new File("..\\a.txt"); // 相對路徑:上層目錄
System.out.println("絕對路徑:" + file1.getAbsolutePath());
System.out.println("是否存在:" + file1.exists());

2. 建立檔案與目錄

// 建立單一空檔案(不可重複建立同名檔案)
File file2 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\aa");
System.out.println("建立檔案:" + file2.createNewFile());

// 建立單層目錄
File file3 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\cc");
System.out.println("建立目錄:" + file3.mkdir());

// 建立多層目錄(含父目錄)
File file4 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\dd");
System.out.println("建立多層目錄:" + file4.mkdirs());

3. 重命名與移動(含跨磁碟)

File src = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\a.txt");
File dest = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\abc.txt");
System.out.println("重命名:" + src.renameTo(dest));

// 跨磁碟移動(重命名至不同磁碟機)
File dest2 = new File("D:\\abc.txt");
System.out.println("跨磁碟移動:" + src.renameTo(dest2));

4. 刪除檔案

File file8 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\abc.txt");
System.out.println("刪除:" + file8.delete()); // 立即刪除
// file8.deleteOnExit(); // JVM 結束時刪除

5. 判斷檔案類型與屬性

File file9 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\aa");
System.out.println("是檔案:" + file9.isFile());
System.out.println("是目錄:" + file9.isDirectory());
System.out.println("是隱藏:" + file9.isHidden());
System.out.println("是絕對路徑:" + file9.isAbsolute());

System.out.println("檔名:" + file9.getName());
System.out.println("路徑:" + file9.getPath());
System.out.println("絕對路徑:" + file9.getAbsolutePath());

6. 檔案大小與修改時間

File file10 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\ab.txt");
System.out.println("大小(位元組):" + file10.length());
System.out.println("父目錄:" + file10.getParent());

long time = file10.lastModified();
Date date = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("最後修改時間:" + sdf.format(date));

7. 列出磁碟根目錄與目錄內容

// 列出所有磁碟根目錄
File[] roots = File.listRoots();
for (File root : roots) {
    System.out.println("磁碟:" + root);
}

// 列出指定目錄下的檔名(含隱藏檔)
File dir = new File("C:\\Users\\cdlx2016\\Desktop\\file類");
String[] names = dir.list();
for (String name : names) {
    System.out.println(name);
}

// 列出 File 物件陣列(可進一步判斷類型)
File dir2 = new File("C:\\Users\\cdlx2016\\Desktop\\Java部分(javaSE)");
File[] files = dir2.listFiles();
for (File f : files) {
    if (f.isDirectory()) {
        System.out.println("[目錄] " + f.getName());
    } else {
        System.out.println("[檔案] " + f.getName());
    }
}

8. 實作 FilenameFilter 過濾特定副檔名

File dir3 = new File("C:\\Users\\cdlx2016\\Desktop\\file類");
String[] txtFiles = dir3.list(new FilenameFilter() {
    @Override
    public boolean accept(File dir, String name) {
        int idx = name.lastIndexOf('.');
        if (idx == -1) return false;
        String ext = name.substring(idx + 1);
        return "txt".equalsIgnoreCase(ext);
    }
});
for (String name : txtFiles) {
    System.out.println("TXT 檔:" + name);
}

9. 關鍵方法速查表

方法說明
exists()檔案/目錄是否存在
createNewFile()建立新空檔案
mkdir() / mkdirs()建立單層/多層目錄
renameTo(File)重命名或移動(跨磁碟視作業系統支援而定)
delete() / deleteOnExit()立即刪除 / JVM 結束時刪除
isFile() / isDirectory()判斷類型
isHidden()是否隱藏
getAbsolutePath()取得絕對路徑
length()檔案大小(位元組)
lastModified()最後修改時間(毫秒時間戳)
list() / listFiles()列出目錄內容(字串陣列 / File 陣列)
list(FilenameFilter)依條件過濾檔名
listFiles(FileFilter)依條件過濾 File 物件

提示: Java 7+ 推薦使用 java.nio.file.Path、Files、DirectoryStream 等 NIO.2 API,功能更強大且支援串流操作。

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