从JFileChooser获取引号的路径?

时间:2012-06-19 11:50:40

标签: java jfilechooser

是否可以让用户在JFileChooser中输入带引号的路径并获取没有引号的路径?

例如,用户将:"c:\path\to\File"放在文件名文本字段中。但是当我得到所选文件时,我得到了当前目录+ "c:\path\to\File"。他们是解决这个问题的方法吗?

谢谢,

1 个答案:

答案 0 :(得分:2)

你可以这样做:

String str = "\"C:\\foor\\bar\"";
System.out.println(str);
String newStr = str.replaceAll("\"?(.+?)\"?", "$1");
System.out.println(newStr);

打印:

  

“C:\ FOO \栏”

     

C:\ FOO \杆

这将删除正好在字符串开头和结尾的引号(")。正则表达式中的?表示引号可能不在那里,因此,例如,以下内容都应该产生相同的结果:

  

“C:\ FOO \栏”

     

“C:\ FOO \杆

     

C:\ FOO \栏“

     

C:\ FOO \杆

但是,据我所知,"字符不会成为有效文件路径的一部分,因此您只需执行以下操作即可:str.replaceAll("\"","");

编辑:看到您的评论和问题编辑,我制作了这段简短的代码,似乎就是您所追求的。也就是说,我不会删除我以前的答案,以防其他人发现它有用。

JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new java.io.File("."));
chooser.setDialogTitle("Hello");
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
chooser.setAcceptAllFileFilterUsed(false);
if (chooser.showOpenDialog(f) == JFileChooser.APPROVE_OPTION) 
{ 
    File file = chooser.getSelectedFile();
    if (file.getName().contains("\""))
    {
        Pattern pattern = Pattern.compile("\"?(.*?)\"?");
        Matcher m = pattern.matcher(file.getName());
        if (m.matches())
        {
            System.out.println("Group Found: " + m.group(1));
        }
    }
}

这似乎与您所做的相同,我在文件文本框中粘贴了以下内容:"C:\foo\bar.txt"和打印的代码C:\foo\bar.txt,不包括初始细分。