亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將目錄路徑與另一個路徑分割

將目錄路徑與另一個路徑分割

慕桂英4014372 2023-12-10 09:52:21
我使用 java 中的系統屬性讀取目錄路徑,它在 Windows 和基于 Linux 的系統中都可以工作。現在我需要將此路徑與路徑的一部分分開以檢索其余部分。例如。,C:\Test1\Test2\Test3\Test4我需要將上面的路徑與C:\Test1\Test2并檢索分開Test3\Test4。當我將其作為字符串獲取并使用split函數時,由于字符的原因,該函數將給我錯誤作為非法字符"\"。如果我打算用 轉義這個字符"\\",這可能在 Linux 中不起作用。有沒有辦法讓我在 Linux 和 Windows 上都可以工作?
查看完整描述

4 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

使用以下方法。


 //Windows

   String s = "C:\\Test1\\Test2\\Test3\\Test4";

   String[] output = s.split(("/".equals(File.separator))? File.separator : "\\\\" );

   //output: [C:, Test1, Test2, Test3, Test4]


 //Linux:

   String linuxString = "/Test1/Test2/Test3/Test4";

   String[] linuxOutput = linuxString.split(("/".equals(File.separator))? File.separator : "\\\\" );

   //output: [, Test1, Test2, Test3, Test4]

希望這能解決這個問題。


查看完整回答
反對 回復 2023-12-10
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

傳遞給的模式String.split具有正則表達式語法,因此該java.util.regex包是尋找處理它們的其他工具的地方,例如引用字符串來強制文字匹配。


因此,僅使用系統屬性和字符串操作的解決方案如下所示


String path=System.getProperty("your.property"), sep=System.getProperty("file.separator");

for(String s: path.split(Pattern.quote(sep)))

    System.out.println(s);

但是,沒有理由不使用專用 API:


Path path = Paths.get(System.getProperty("your.property"));

if(path.isAbsolute()) System.out.println(path.getRoot());

for(Path p: path)

    System.out.println(p);

請注意,這也可以正確處理根路徑,即在 Windows 上,驅動器的根類似于C:\, not C:,而在 Linux 上,根是/, 不是空字符串,并且當僅在分隔符處拆分時,這兩種情況都無法正確處理。


甚至在 Java 7 之前,就有一個 API 可以處理這個問題:


File path = new File(System.getProperty("your.property"));

for(File f = path; f != null; f = f.getParentFile())

    System.out.println(f.getName().isEmpty()? f.getPath(): f.getName());

盡管代碼將以相反的順序迭代元素。


請注意,使用專用 API,在路徑上方的兩個級別進行拆分的特定任務變得多么簡單:


Path path = Paths.get(System.getProperty("your.property"));

Path first = path.getParent().getParent(), second = first.relativize(path);


System.out.println("first: "+first);

System.out.println("second: "+second);


查看完整回答
反對 回復 2023-12-10
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

您正在尋找File.separator.?用它來分割你的字符串。

從文檔中,

與系統相關的默認名稱分隔符,為方便起見,表示為字符串。


查看完整回答
反對 回復 2023-12-10
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

構建文件路徑時可以使用分隔符。

使用 java.io.File.separator


查看完整回答
反對 回復 2023-12-10
  • 4 回答
  • 0 關注
  • 244 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號