该行和下面的注释行产生相同的结果:
public class StringEscapeMain {
public static void main(String[] args){
String fileName = "C:\\Dev\\TryEclipseJava\\StringEscape\\\\\\f.txt";
/* String fileName = "C:\\Dev\\TryEclipseJava\\StringEscape\\f.txt";*/
File file = new File(fileName);
if(file.exists()){
System.out.println("File exists!");
}
else{
System.out.println("File does not exist!");
}
}
}
Java是否始终将大于2个斜杠的任何斜杠序列都视为与“ \”相同?
谢谢!
最佳答案
第一个\
用于转义,这意味着C:\\Dev\\TryEclipseJava\\StringEscape\\\\\\f.txt
将被编译为C:\Dev\TryEclipseJava\StringEscape\\\f.txt
。
和C:\\Dev\\TryEclipseJava\\StringEscape\\f.txt
将被编译为C:\Dev\TryEclipseJava\StringEscape\f.txt
。
当您创建具有以下内容的File
实例时:
File file = new File(fileName);
fileName
将根据您的FileSystem
被“规范化”:public File(String pathname) {
if (pathname == null) {
throw new NullPointerException();
}
this.path = fs.normalize(pathname);
this.prefixLength = fs.prefixLength(this.path);
}
在
WinNTFileSystem
的“规范化”过程中,C:\Dev\TryEclipseJava\StringEscape\\\f.txt
将被截断为:
C:\Dev\TryEclipseJava\StringEscape
然后它将:
从路径的其余部分删除多余的斜杠,强制所有
切成首选斜线
最后,
fileName
被标准化为:C:\Dev\TryEclipseJava\StringEscape\f.txt
。关于java - Java是否在文件路径中将多个斜杠“\\\\\\”视为单个“\\”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49397530/