简体   繁体   中英

Windows escape sequence issue with file path in java

I need to use windows file path to do some operation on files but i am getting invalid escape sequence error.

File f = new File("C:\test");

the system accepts only " \\\\ " or "/" but if I copy file path from windows it is with "\\". how can i solve this issue

Use File.seperator in place of "\\".

File f = new File("C:"+File.seperator+"test");

File.seperator returns "\\" and it is not treated as an escape character.

If your file test.txt is saved in folder D:/MyFloder/MyPrograms you can do something like this

File f = new File("D:"+File.seperator+"MyFloder"+File.seperator+"MyPrograms"+File.seperator+"test.txt");

EDIT

You don't need to worry about OS

For Unix : File.separator = /

For Windows : File.separator = \\

\\ is the escape character in Java Strings. Use \\\\ instead.

"C:\\\\test" resolves to the String C:\\test

You can use \\\\ or / but / is better because it is OS-independent.

Replace the single backslash in the path with a double backslash or a single forward slash to solve your issue.

Internally, Java will convert it to the file seperator of the OS

File f = new File("C:\\\\test"); is correct.

You are not creating a File with the path "C:\\\\test" here. You are creating a File with the path "C:\\test". The \\\\-to-\\ conversion happens when you compile the program - by the time your program is running, the double backslashes are gone.

The same for String - String s = "C:\\\\test"; does not create a string with two backslashes, only one.

You can think of it this way: the string does not actually have two backslashes, but you have to write it that way to put it in your code.

You might be wondering why that is - it's because backslashes are used to insert special characters in strings. When you type \\t in a string it inserts a tab, for example. If you want to insert a backslash, then t, you type \\\\t .

您可以在Windows XP以后的路径中使用'/'(与Linux中一样),因此请忽略\\

Use java.nio.file.Path instead of java.io , you'll not have problem with escape sequence character :

import java.nio.file.Path;
import java.nio.file.Paths;
    Path path = Paths.get("C:\test");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM