Java 提供了豐富的 API 來存取系統級資源。本文整理了三個常見實用場景:列出系統安裝的字體名稱、讀取指定目錄下的所有文件名、獲取程式運行的當前工作目錄。透過一個整合範例,快速掌握核心 API 用法。
package com.example.systeminfo;
import java.awt.GraphicsEnvironment;
import java.io.File;
public class SystemResourceDemo {
public static void main(String[] args) {
// 1. 獲取系統所有字體家族名稱
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontFamilies = env.getAvailableFontFamilyNames();
System.out.println("=== 系統安裝字體列表 ===");
for (String font : fontFamilies) {
System.out.println(font);
}
// 2. 列出指定目錄下的所有文件/資料夾名稱
// 注意:Windows 路徑需雙反斜線或單正斜線
File dir = new File("E:/QQImage"); // 或 "E:\\QQImage"
System.out.println("\n=== 目錄文件列表: " + dir.getAbsolutePath() + " ===");
if (dir.exists() && dir.isDirectory()) {
String[] files = dir.list();
if (files != null) {
for (String fileName : files) {
System.out.println(fileName);
}
} else {
System.out.println("目錄為空或無讀取權限");
}
} else {
System.out.println("路徑不存在或非目錄");
}
// 3. 獲取當前工作目錄
String currentDir = System.getProperty("user.dir");
System.out.println("\n=== 當前工作目錄 ===");
System.out.println(currentDir);
}
}
File.list() 僅返回名稱字串陣列,不包含路徑。若需完整路徑,可使用 listFiles() 獲取 File 物件陣列。/ 或雙反斜線 \\,避免轉義問題;或使用 File.separator 實現跨平台相容。exists() 與 isDirectory(),list() 若目錄不存在或無權限會返回 null 而非拋出異常。getAvailableFontFamilyNames() 返回邏輯字體名,實際渲染時可能映射到不同物理字體,建議搭配 Font.canDisplayUpTo() 驗證字符支援度。掌握這三個 API,即可輕鬆處理字體枚舉、文件掃描與路徑定位等系統互動需求。代碼簡潔且無第三方依賴,適合作為工具類方法封裝至專案公共庫中。