[英]Windows escape sequence issue with file path in java
我需要使用Windows文件路徑對文件進行一些操作,但是我收到了無效的轉義序列錯誤。
File f = new File("C:\test");
系統僅接受“ \\\\”或“ /”,但是如果我從Windows復制文件路徑,則使用“ \\”。 我該如何解決這個問題
使用File.seperator代替“ \\”。
File f = new File("C:"+File.seperator+"test");
File.seperator返回“ \\”,並且不將其視為轉義字符。
如果您的文件test.txt
保存在文件夾D:/ MyFloder / MyPrograms中,則可以執行以下操作
File f = new File("D:"+File.seperator+"MyFloder"+File.seperator+"MyPrograms"+File.seperator+"test.txt");
編輯
您無需擔心操作系統
對於Unix: File.separator = /
對於Windows: File.separator = \\
\\
是Java字符串中的轉義字符。 使用\\\\
代替。
"C:\\\\test"
解析為字符串C:\\test
您可以使用\\\\
或/
但是/
更好,因為它與操作系統無關。
將路徑中的單個反斜杠替換為雙反斜杠或單個正斜杠即可解決您的問題。
在內部,Java會將其轉換為操作系統的文件分隔符
File f = new File("C:\\\\test");
是正確的。
您不在此處創建路徑為“ C:\\\\ test”的文件。 您正在創建路徑為“ C:\\ test”的文件。 \\\\-to \\\\轉換是在編譯程序時發生的-程序運行時,雙反斜杠消失了。
字符串相同- String s = "C:\\\\test";
不會創建帶有兩個反斜杠(只有一個)的字符串。
您可以這樣想:字符串實際上沒有兩個反斜杠,但是您必須以這種方式編寫它才能將其放入代碼中。
您可能想知道為什么-這是因為反斜杠用於在字符串中插入特殊字符。 例如,當您在字符串中鍵入\\t
,它將插入一個制表符。 如果要插入反斜杠,請輸入\\\\t
。
您可以在Windows XP以后的路徑中使用'/'(與Linux中一樣),因此請忽略\\
使用java.nio.file.Path
而不是java.io
,轉義序列字符不會出現問題:
import java.nio.file.Path;
import java.nio.file.Paths;
Path path = Paths.get("C:\test");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.