2012-06-19 2 views
2

Можно ли вводить пользователя в путь с кавычками в JFileChooser и получить этот путь без кавычек?Получить путь с кавычками от JFileChooser?

Например, пользователь помещает: "c:\path\to\File" в текстовое поле Имя файла. но когда я получил выбранный файл, я получил текущий каталог + "c:\path\to\File". Это их способ решить эту проблему?

Спасибо,

+0

Используйте метод String.replaceAll. – adatapost

ответ

1

Вы могли бы сделать что-то вроде так:

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("\"","");.

EDIT: Увидев ваш комментарий и вопрос, отредактировал, я сделал этот короткий фрагмент кода, который, похоже, делает то, что вам нужно. Тем не менее, я не буду удалять свой предыдущий ответ на случай, если кто-то другой найдет его полезным.

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, за исключением начального сегмента.

+1

Как насчет текущего каталога, который добавляется в путь. JFileChooser предположил, что путь с кавычками - это имя файла и добавляет текущий каталог как родительский –

+0

@FerasOdeh: я изменил свой ответ, это должно делать то, что вам нужно. – npinti

+0

Не видите, как он будет работать как '\ '? (. *?) \"? 'Будет соответствовать пустой строке. – dacwe

Смежные вопросы