0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用正確的文件和路徑分隔符

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-08 16:19 ? 次閱讀

不同的操作系統(tǒng)使用不同的字符作為文件和路徑分隔符。當(dāng)我們的應(yīng)用程序需要在多個平臺上運行時,我們需要正確處理這些問題。

Java幫助我們選擇一個合適的分隔符,并提供了一些函數(shù)來幫助我們創(chuàng)建能在主機操作系統(tǒng)上運行的路徑。

在本文中,我們將了解如何編寫代碼來使用正確的文件和路徑分隔符。

2.文件分隔符

文件分隔符是用來分隔構(gòu)成特定位置路徑的目錄名的字符。

1.獲取文件分隔符

在Java中,有幾種方法可以獲得文件分隔符。

我們可以用File.separator來獲取String的分隔符。

String fileSeparator = File.separator;

我們也可以用File.separatorChar獲得這個分隔符的字符。

char fileSeparatorChar = File.separatorChar;

從Java 7開始,我們也可以使用 文件系統(tǒng) 。

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

輸出結(jié)果將取決于主機操作系統(tǒng)。文件分隔符在Windows上為,在macOS和基于Unix的操作系統(tǒng)上為/

2.構(gòu)造一個文件路徑

Java提供了一些方法來從目錄列表中構(gòu)建文件路徑。

這里,我們使用Paths類。

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

讓我們在Microsoft Windows上測試一下。

assertEquals("dir1dir2", path.toString());

同樣,我們也可以在Linux或Mac上測試它。

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

我們也可以使用文件類。

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

讓我們在Microsoft Windows上測試一下。

assertEquals("file1ile2", file.toString());

同樣,我們也可以在Linux或Mac上測試它。

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

正如我們所看到的,我們可以只提供路徑字符串來構(gòu)建一個文件路徑---我們不需要明確地包括一個文件分隔符。

3.路徑分隔符

路徑分隔符是操作系統(tǒng)常用的一個字符,用于分隔路徑列表中的各個路徑。

3.1.獲取路徑分隔符

我們可以用File.pathSeparator來獲取路徑分隔符的 String 。

String pathSeparator = File.pathSeparator;

我們也可以以char的形式獲得路徑分隔符。

char pathSeparatorChar = File.pathSeparatorChar;

這兩個例子都返回了路徑分隔符。在Windows上是分號;,在Mac和基于Unix的操作系統(tǒng)上是冒號:。

3.2.構(gòu)造一個文件路徑

我們可以用分隔符作為分隔符來構(gòu)建一個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上的表現(xiàn)會有所不同。

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

總結(jié)

在這篇短文中,我們學(xué)習(xí)了如何使用系統(tǒng)特定的文件分隔符來構(gòu)建路徑,這樣我們的代碼就可以在多個操作系統(tǒng)上工作。

我們看到了如何使用內(nèi)置類PathFile來構(gòu)造文件路徑,我們還看到了如何獲得必要的分隔符來使用String連接工具。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    556

    瀏覽量

    24639
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4262

    瀏覽量

    62233
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4697

    瀏覽量

    68091
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3226

    瀏覽量

    57507
收藏 人收藏

    評論

    相關(guān)推薦

    c語言讀寫表格(csv)文件 讀取csv文件示例

    ,不含必須像二進(jìn)制數(shù)字那樣被解讀的數(shù)據(jù)。CSV文件由任意數(shù)目的記錄組成,記錄間以某種換行分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號或制表
    的頭像 發(fā)表于 06-08 09:22 ?6283次閱讀
    c語言讀寫表格(csv)<b class='flag-5'>文件</b>  讀取csv<b class='flag-5'>文件</b>示例

    JAVA語言的標(biāo)識、注釋和分隔符

    JAVA語言的標(biāo)識、注釋和分隔符 3.2.1 標(biāo)識程序中要用到許多名字,諸如類、屬性、方法的名字。標(biāo)識就是用來標(biāo)記它們的名字。Java標(biāo)識
    發(fā)表于 12-06 00:21

    怎么按分隔符來解析字符串

    字符串里的內(nèi)容是1,2,3,4我想按分隔符來解析它解析結(jié)果是
    發(fā)表于 03-19 10:33

    路徑問題

    :文件未找到。文件可能被移動或刪除,或文件路徑的格式可能不符合操作系統(tǒng)。例如,在Windows、Mac OS X和Linux中分別使用“\”、“:”和“/”作為
    發(fā)表于 06-27 10:05

    串口連接中怎么設(shè)置分隔符

    串口配置中有波特率等等,但是沒有分隔符,但是我需要設(shè)置分隔符,我需要怎么做?
    發(fā)表于 07-23 09:41

    急求,電子文件表格讀取的分隔符能不能設(shè)成單個或者多個空格這個條件?

    新手有幾個問題想請教1.大量數(shù)據(jù)讀取,電子文件表格讀取和文本文件讀取哪一個效率高?2.電子表格文件讀取 其中的分隔符 能不能設(shè)置成 單個或者多個空格這個條件?
    發(fā)表于 08-06 18:34

    Labview中寫入帶分隔符的電子表格輸入帶E的字符串,格式會轉(zhuǎn)換成數(shù)字

    `Labview中寫入帶分隔符的電子表格輸入帶數(shù)字后帶E的字符串,格式會轉(zhuǎn)換成數(shù)字。EXCLE中我設(shè)置成文本顯示也是一樣,我是想輸入字符串198E5,EXCLE中顯示的就是198E5,求指教,感謝!`
    發(fā)表于 09-21 15:11

    Virtex 5中分隔符的實例化

    這封郵件是關(guān)于Virtex 5中分隔符的實例化.Virtex 5中沒有用于分割的Coregen組件。在VrtE 5 ISE項目中實例化了Virtex 4 Coregen分頻器。我使用的是ISE版本
    發(fā)表于 09-28 11:35

    LabVIEW2018 連續(xù)寫入文件(帶分隔符

    此示例演示如何將數(shù)據(jù)連續(xù)寫入文件。vi每秒生成一個0至100的隨機數(shù),直到停止vi。波形圖顯示隨機數(shù)和用戶定義的限制。如果隨機數(shù)超過限制,超過限定燈亮起。生成每個數(shù)字后,條目、日期、時間(包括秒)、數(shù)字和一條描述數(shù)字是“低于”還是“超過”預(yù)設(shè)限制的單字消息將以(制表
    發(fā)表于 06-14 16:05

    E4438C波形下載出現(xiàn)“-103,無效分隔符

    大家好,我一直在嘗試通過局域網(wǎng)將IQ數(shù)據(jù)下載到E4438C,但我得到了“-103,無效分隔符”Eror。我找不到代碼中的錯誤。任何幫助,將不勝感激。我附上了我的代碼.RegardsCengiz
    發(fā)表于 07-29 09:38

    為什么使用讀取帶分隔符電子表格VI 讀取excel文件,圖像不太對呢?

    我想讀取excel表格,然后將這個數(shù)據(jù)輸出至波形圖, 用的是讀取帶分隔符電子表格VI , 請問為什么結(jié)果卻是這樣,這個具體怎么改正呢,跪謝?。。?!
    發(fā)表于 04-19 17:46

    LABVIEW通過串口收到無分隔符號的數(shù)據(jù)怎么處理

    LABVIEW通過串口收到無分隔符號的數(shù)據(jù)怎么處理成一維數(shù)組。
    發(fā)表于 04-21 19:48

    Labview 用寫入帶分隔符電子表格記錄數(shù)據(jù)被覆蓋

    Labview 用寫入帶分隔符電子表格記錄數(shù)據(jù)被覆蓋,在網(wǎng)上查資料說要添加“換行”不知道怎么加,請各位大佬給指點下,感謝
    發(fā)表于 04-11 15:51

    基于MM32F5270開發(fā)板的DAC輸出電壓試用過程

    VCC電壓為:------------------------------分隔符
    發(fā)表于 09-05 16:22

    不同的系統(tǒng)中路徑分隔符分析

    在不同的系統(tǒng)中,路徑分隔符不同,故需要做出判斷,并切換分隔符; String類中replaceAll方法如下: String.replaceAll(String regex,String
    的頭像 發(fā)表于 12-07 17:11 ?4254次閱讀