Java文件分隔符與文件路徑分隔符

    1.概述

    不同的操作系統使用不同的字符作為文件和路徑分隔符。當我們的應用程序必須在多個平台上運行時,我們需要正確處理它們。

    Java幫助我們選擇合適的分隔符,並提供函數來幫助我們創建可在主機操作系統上運行的路徑。

    在這個簡短的教程中,我們將了解如何編寫代碼以使用正確的文件和路徑分隔符。

    2.文件分隔符File Separator

    文件分隔符是用於分隔組成到特定位置路徑的目錄名稱的字符。

    2.1。獲取文件分隔符File Separator

    有幾種方法可以獲取Java中的文件分隔符。

    我們可以使用File.separator將分隔符作為String File.separator

    String fileSeparator = File.separator;

    我們也可以使用File.separatorChar將此分隔符作為char File.separatorChar

    char fileSeparatorChar = File.separatorChar;

    從Java 7開始,我們還可以使用FileSystems

    String fileSeparator = FileSystems.getDefault().getSeparator();

    輸出將取決於主機操作系統。在Windows和/ macOS和基於Unix的操作系統上,文件分隔符為\

    2.2。構造文件路徑File Path

    Java提供了幾種從其目錄列表構造文件路徑的方法。

    在這裡,我們使用Paths類:

    Path path = Paths.get("dir1", "dir2");

    讓我們在Microsoft Windows上對其進行測試:

    assertEquals("dir1\\dir2", path.toString());

    同樣,我們可以在Linux或Mac上對其進行測試:

    assertEquals("dir1/dir2", path.toString());
    

    我們還可以使用File類:

    File file = new File("file1", "file2");

    讓我們在Microsoft Windows上對其進行測試:

    assertEquals("file1\\file2", file.toString());

    同樣,我們可以在Linux或Mac上對其進行測試:

    assertEquals("file1/file2", file.toString());

    如我們所見,我們僅提供路徑字符串即可構建文件路徑-我們不需要顯式包括文件分隔符。

    3. 路徑分隔符Path Separator

    路徑分隔符是操作系統通常用來分隔路徑列表中各個路徑的字符。

    3.1。獲取路徑分隔符pathSeparator

    我們可以使用File.pathSeparator將路徑分隔符作為String File.pathSeparator

    String pathSeparator = File.pathSeparator;

    我們還可以將路徑分隔符作為char

    char pathSeparatorChar = File.pathSeparatorChar;

    這兩個示例都返迴路徑分隔符。在Windows上是分號(; )在基於Mac和Unix的操作系統上是冒號(:)。

    3.2 構造文件路徑

    我們可以使用分隔符作為分隔符,將文件路徑構造為String

    讓我們嘗試一下String.join方法:

    String[] pathNames = { "path1", "path2", "path3" };
    
     String path = String.join(File.pathSeparator, pathNames);

    在這裡,我們在Windows上測試代碼:

    assertEquals("path1;path2;path3", path);

    並且文件路徑在Linux或Mac上看起來會有所不同:

    assertEquals("path1:path2:path3", path);

    同樣,我們可以使用StringJoiner類:

    public static StringJoiner buildPathUsingStringJoiner(String path1, String path2) {
    
     StringJoiner joiner = new StringJoiner(File.pathSeparator);
    
     joiner.add(path1);
    
     joiner.add(path2);
    
     return joiner;
    
     }

    讓我們在Microsoft Windows上測試我們的代碼:

    assertEquals("path1;path2", buildPathUsingStringJoiner("path1", "path2"));

    在Mac或Unix上,其行為將有所不同:

    assertEquals("path1:path2", buildPathUsingStringJoiner("path1", "path2"));

    4。結論

    在這篇簡短的文章中,我們學習瞭如何使用特定於系統的文件分隔符構造路徑,以便我們的代碼可以在多個操作系統上工作。

    我們看到瞭如何使用內置類PathFile來構造文件路徑,並且看到瞭如何獲取必要的分隔符以與String串聯實用程序一起使用。

    與往常一樣,示例代碼可在GitHub上找到