Java IO 操作以「流」為核心抽象:輸出流負責將資料從程式寫出至目的地(檔案、網路、記憶體);輸入流負責從來源讀取資料進入程式。所有 IO 操作皆圍繞這兩個方向展開。
java.io.File 類提供檔案與目錄的路徑資訊查詢、屬性檢查及基本建立/刪除功能:
getName():檔案名稱getPath():相對路徑getAbsolutePath():絕對路徑getParent():父目錄路徑exists():是否存在isFile() / isDirectory():檔案或目錄判斷isAbsolute():是否為絕對路徑canRead() / canWrite() / isHidden():權限與隱藏屬性length():檔案大小(位元組)lastModified():最後修改時間(配合 Date 格式化)// 建立新檔案(不覆蓋既有檔案)
boolean created = file.createNewFile();
// 刪除檔案或空目錄
boolean deleted = file.delete();
public class PrintFiles {
private String indent = "";
public void list(File dir) {
System.out.println(indent + dir.getName());
indent += " | ";
print(dir, indent);
}
private void print(File dir, String indent) {
File[] files = dir.listFiles();
if (files == null) return;
for (File file : files) {
if (file.isFile()) {
System.out.println(indent + file.getName());
} else if (file.isDirectory()) {
list(file); // 遞迴處理子目錄
}
}
}
public static void main(String[] args) {
new PrintFiles().list(new File("C:/Your/Target/Directory"));
}
}
File dir = new File("D:/");
File[] txtFiles = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".txt");
}
});
File[] filtered = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return !name.endsWith("a"); // 排除以 a 結尾的檔案
}
});
java.nio.file.Files 與 Path API,功能更強大且支援串流操作File.separator 或 Paths.get()