Java 如何使用JFileChooser在单反斜杠的中间添加双反斜杠

Java 如何使用JFileChooser在单反斜杠的中间添加双反斜杠,java,eclipse,path,jfilechooser,backslash,Java,Eclipse,Path,Jfilechooser,Backslash,我正在创建一个程序来搜索目录路径。我用JFileChooser来做这件事,这很好。这是它的代码 JButton btnPathBrowser = new JButton("Select Database"); btnPathBrowser.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { final

我正在创建一个程序来搜索目录路径。我用JFileChooser来做这件事,这很好。这是它的代码

JButton btnPathBrowser = new JButton("Select Database");
        btnPathBrowser.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                final JFileChooser fc = new JFileChooser();
                fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
                int response = fc.showOpenDialog(Create.this);
                if (response == JFileChooser.APPROVE_OPTION); {
                    txtPath.setText(fc.getSelectedFile().toString());
                    //fileName = fc.getSelectedFile().toString();

                }


            }
        }); 
现在,当我运行它时,我得到了这样写的路径。

因此,您可以看到,路径是用一个反斜杠分隔的,例如C:\User\Folder\Database,但我希望它用两个反斜杠来分隔路径,如下所示。C:\Users\Database。我尝试了这个,但出现了错误:

txtPath.setText(fc.getSelectedFile().toString().replace("\", "\\"));
我想这样使用它:

String  sourceFileName              = new String(txtPath.getSelectedText());

我对这一点很陌生,因此我的代码中任何指向正确方向的指针都将受到赞赏。

您不需要替换任何东西。您只需要在字符串文本中转义斜杠,例如

String myPath = "C:\\foo\\bar";
即使这样,您也可以使用独立于平台的版本

String myPath = "C:/foo/bar";
如果真的需要用双斜杠替换斜杠,则必须对其进行转义(因为参数是字符串文字),因此最终的结果是

String foo = bar.replace("\\", "\\\\"); // Convert one slash to two slashes
此外,如果要使用以正则表达式为参数的
replaceAll
方法,则需要双重转义。一次用于字符串文本,一次用于正则表达式引擎:

String foo = bar.replaceAll("\\\\", "\\\\\\\\"); // Convert one slash to two slashes

但重申一下,在您的情况下,您不需要双斜杠。

您不需要替换任何东西。您只需要在字符串文本中转义斜杠,例如

String myPath = "C:\\foo\\bar";
即使这样,您也可以使用独立于平台的版本

String myPath = "C:/foo/bar";
如果真的需要用双斜杠替换斜杠,则必须对其进行转义(因为参数是字符串文字),因此最终的结果是

String foo = bar.replace("\\", "\\\\"); // Convert one slash to two slashes
此外,如果要使用以正则表达式为参数的
replaceAll
方法,则需要双重转义。一次用于字符串文本,一次用于正则表达式引擎:

String foo = bar.replaceAll("\\\\", "\\\\\\\\"); // Convert one slash to two slashes

但是重申一下,在您的情况下,不需要双斜杠。

谢谢,这对我帮助很大!谢谢,这对我帮助很大!