Java-使用“时出现正则表达式错误”\\&引用;作为纤度计

Java-使用“时出现正则表达式错误”\\&引用;作为纤度计,java,regex,io,java.util.scanner,Java,Regex,Io,Java.util.scanner,下面的代码来自一个类中的一个方法,该类用于修改程序文件夹中的文件目录列表。但是,我尝试使用“\”作为扫描仪的分隔符,因为我只需要目录“S:\”的开头和最后一部分,即子文件夹的名称。例如,它看起来像这样: F:\Data\Subfolder\other 代码符合要求,但当我运行该方法时,会出现以下运行时错误: java.util.regex.PatternSyntaxException:索引1附近出现意外内部错误 \ 我只是想知道是否有人知道这意味着什么,我如何才能阻止它的发生。是因为使用\作为d

下面的代码来自一个类中的一个方法,该类用于修改程序文件夹中的文件目录列表。但是,我尝试使用“\”作为扫描仪的分隔符,因为我只需要目录“S:\”的开头和最后一部分,即子文件夹的名称。例如,它看起来像这样:

F:\Data\Subfolder\other

代码符合要求,但当我运行该方法时,会出现以下运行时错误:

java.util.regex.PatternSyntaxException:索引1附近出现意外内部错误 \

我只是想知道是否有人知道这意味着什么,我如何才能阻止它的发生。是因为使用\作为delimeter吗

注意:newFolder类是一个嵌套类

public void scanFiles() throws IOException{

       try
       {
        System.out.println("Sage 2015 is Installed on this machine");
        File companyFile = new File(sageFolders[8] + "\\COMPANY");
        Scanner input = new Scanner(new BufferedReader(new FileReader(companyFile)));
        input.useDelimiter("\\");


        while(input.hasNextLine())
        {
           if(line.contains("F"))
           {
               String drive = input.next();
               String dataFolder = input.next();
               String sageFolder = input.next();
               String clientFolder = input.next();

               newFolders.add(new newFolder(drive, clientFolder));


           }

        }
        //Close the Readers
        fileReader.close();
        bufferedReader.close();

        //fileWriter = new FileWriter(companyFile);
        //bufferedWriter = new BufferedWriter(fileWriter);

           //Write back to file

        //fileWriter.flush();
        //bufferedWriter.close();

       }
       catch(FileNotFoundException e)
       {
          System.out.println("File not Found: Moving onto next Version"); 
       }

}

class newFolder
{
    private String driveLetter;
    private String clientFolder;

    public newFolder(String driveLetter, String clientFolder)
    {
        this.driveLetter = driveLetter;
        this.clientFolder = clientFolder;
    }
}

由于
\
是正则表达式的特殊字符,而且在Java中也是特殊的,因此您必须用
\\
转义Java反斜杠,并用
\
转义正则表达式反斜杠,因此。。。您有四个反斜杠
\\\\

您必须使用:

input.useDelimiter("\\\\");