如何使用 JFileChooser 添加双反斜杠而不是单个反斜杠

How to add double back-slashes insead of a single back-slashes using JFileChooser

我正在创建一个程序来搜索目录路径。我已经使用 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();

                }


            }
        }); 

现在,当我 运行 这样做时,我得到了以这种方式编写的路径。 GUI showing the Path

所以你可以看到路径是用一个反斜杠分隔的 e.g.C:\User\Folder\Database 但我希望它像这样用两个反斜杠分隔路径。 C:\Users\Database。我试过了,但出现错误:

txtPath.setText(fc.getSelectedFile().toString().replace("\", "\"));

我想这样使用它:

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

我对此还很陌生,所以任何关于我的代码的正确方向的指示都将不胜感激。

您不需要更换任何东西。只需要对String字面量中的斜杠进行转义即可,例如

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

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