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

Java 獲取系統字體、目錄文件列表與當前路徑的完整範例

     編輯:Java 相關知識

前言

Java 提供了豐富的 API 來存取系統級資源。本文整理了三個常見實用場景:列出系統安裝的字體名稱、讀取指定目錄下的所有文件名、獲取程式運行的當前工作目錄。透過一個整合範例,快速掌握核心 API 用法。

核心 API 介紹

  • GraphicsEnvironment.getLocalGraphicsEnvironment():獲取本地圖形環境,進而取得字體資訊。
  • File.list():列出目錄下的文件與子目錄名稱(僅名稱,不含路徑)。
  • System.getProperty("user.dir"):獲取 JVM 啟動時的當前工作目錄。

完整代碼範例

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);
    }
}

執行結果說明

  • 字體列表:輸出系統中所有可用的字體家族名(如 "Microsoft YaHei", "SimSun", "Arial" 等),可用於 GUI 開發時的字體選擇驗證。
  • 目錄列表:File.list() 僅返回名稱字串陣列,不包含路徑。若需完整路徑,可使用 listFiles() 獲取 File 物件陣列。
  • 工作目錄:通常為專案根目錄(IDE 運行)或 JAR 包所在目錄(命令列運行),常用於相對路徑解析的基準。

常見陷阱與最佳實踐

  • 路徑分隔符:Windows 建議使用正斜線 / 或雙反斜線 \\,避免轉義問題;或使用 File.separator 實現跨平台相容。
  • 權限檢查:讀取目錄前務必檢查 exists() 與 isDirectory(),list() 若目錄不存在或無權限會返回 null 而非拋出異常。
  • 字體可用性:getAvailableFontFamilyNames() 返回邏輯字體名,實際渲染時可能映射到不同物理字體,建議搭配 Font.canDisplayUpTo() 驗證字符支援度。

總結

掌握這三個 API,即可輕鬆處理字體枚舉、文件掃描與路徑定位等系統互動需求。代碼簡潔且無第三方依賴,適合作為工具類方法封裝至專案公共庫中。

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