该行和下面的注释行产生相同的结果:

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/

10-10 10:57