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

Java 取得平台相關行分隔符與路徑分隔符的標準做法

     編輯:Java 相關知識

前言

跨平台開發時,硬編碼 \n、\r\n、/、\ 是常見 Bug 來源。Java 提供 System.getProperty() 以鍵值對方式取得當前 JVM 執行平台的標準分隔符,本文整理完整鍵名對照表與可直接使用的工具類。

核心分隔符屬性鍵名

屬性鍵用途WindowsLinux/macOS
line.separator換行符\r\n (CRLF)\n (LF)
file.separator檔案路徑分隔符\/
path.separatorCLASSPATH 等路徑列表分隔符;:

可重複使用的工具類

package com.example.util;

import java.util.Properties;

public final class SeparatorUtils {
    private static final Properties PROPS = System.getProperties();

    private SeparatorUtils() {} // 防止實例化

    /** 取得當前平台行分隔符 */
    public static String getLineSeparator() {
        return PROPS.getProperty("line.separator");
    }

    /** 取得當前平台檔案路徑分隔符 */
    public static String getFileSeparator() {
        return PROPS.getProperty("file.separator");
    }

    /** 取得當前平台路徑列表分隔符 */
    public static String getPathSeparator() {
        return PROPS.getProperty("path.separator");
    }

    /** 示範主程式 */
    public static void main(String[] args) {
        System.out.println("Line separator: [" + getLineSeparator() + "]");
        System.out.println("File separator: [" + getFileSeparator() + "]");
        System.out.println("Path separator: [" + getPathSeparator() + "]");
    }
}

執行結果範例

Windows:
Line separator: [
]
File separator: [\]
Path separator: [;]

Linux:
Line separator: [
]
File separator: [/]
Path separator: [:]

NIO.2 更現代的做法 (JDK 7+)

import java.nio.file.FileSystems;

String sep = FileSystems.getDefault().getSeparator(); // 檔案分隔符
Path path = FileSystems.getDefault().getPath("a", "b", "c"); // 自動使用正確分隔符
// 輸出: a\b\c (Windows) 或 a/b/c (Linux)

常見 System Properties 完整對照表 (節錄)

KeyDescription
java.versionJRE 版本
java.vendorJRE 廠商
java.homeJRE 安裝目錄
java.class.path類別路徑
java.library.path原生庫搜尋路徑
java.io.tmpdir預設暫存目錄
os.name作業系統名稱
os.archOS 架構 (x86/amd64/aarch64)
os.versionOS 版本
user.name當前使用者帳號
user.home使用者家目錄
user.dir當前工作目錄
file.encoding預設檔案編碼 (JDK 18+ 預設 UTF-8)
sun.jnu.encoding檔案系統編碼

最佳實踐建議

  1. 拼接路徑一律用 Path 或 File:
    Path p = Paths.get("config", "app.properties"); 自動處理分隔符。
  2. 組裝命令列/CLASSPATH 字串:使用 System.getProperty("path.separator") 而非硬編碼 ; 或 :。
  3. 寫入文字檔換行:
    writer.write(line + System.lineSeparator()); 或 bw.newLine();。
  4. 單元測試跨平台驗證:在 CI/CD 中於 Windows/Linux/macOS 皆執行測試,確保分隔符處理正確。

結語

善用 System.getProperty() 與 NIO.2 FileSystems,讓程式碼真正做到 Write Once, Run Anywhere。將上述工具類納入專案通用模組,團隊協作時統一呼叫,徹底杜絕分隔符硬編碼問題。

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