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

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

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

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

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

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

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

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

2.文件分隔符

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

1.獲取文件分隔符

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

我們可以用File.separator來(lái)獲取String的分隔符。

String fileSeparator = File.separator;

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

char fileSeparatorChar = File.separatorChar;

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

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

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

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

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

這里,我們使用Paths類(lèi)。

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

讓我們?cè)贛icrosoft Windows上測(cè)試一下。

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

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

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

我們也可以使用文件類(lèi)。

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

讓我們?cè)贛icrosoft Windows上測(cè)試一下。

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

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

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

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

3.路徑分隔符

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

3.1.獲取路徑分隔符

我們可以用File.pathSeparator來(lái)獲取路徑分隔符的 String 。

String pathSeparator = File.pathSeparator;

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

char pathSeparatorChar = File.pathSeparatorChar;

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

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

我們可以用分隔符作為分隔符來(lái)構(gòu)建一個(gè)String的文件路徑。

讓我們?cè)囋?em>String.join方法:

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

這里我們?cè)赪indows上測(cè)試我們的代碼。

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

而文件路徑在Linux或Mac上看起來(lái)會(huì)有所不同。

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

類(lèi)似地,我們可以使用StringJoiner類(lèi):

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

讓我們?cè)贛icrosoft Windows上測(cè)試我們的代碼。

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

而且它在Mac或Unix上的表現(xiàn)會(huì)有所不同。

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

總結(jié)

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

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

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

    關(guān)注

    1

    文章

    561

    瀏覽量

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

    關(guān)注

    3

    文章

    4277

    瀏覽量

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

    關(guān)注

    30

    文章

    4722

    瀏覽量

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

    關(guān)注

    37

    文章

    3237

    瀏覽量

    57547
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    c語(yǔ)言讀寫(xiě)表格(csv)文件 讀取csv文件示例

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

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

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

    怎么按分隔符來(lái)解析字符串

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

    路徑問(wèn)題

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

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

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

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

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

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

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

    Virtex 5中分隔符的實(shí)例化

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

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

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

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

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

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

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

    LABVIEW通過(guò)串口收到無(wú)分隔符號(hào)的數(shù)據(jù)怎么處理

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

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

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

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

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

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

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