Как получить правильный путь в Java с помощью JFileChooser в соответствии с операционной системой

В моем Java-приложении мне нужно выбрать путь с помощью JFileChooser. Код, который я написал, выглядит следующим образом:

jfChooser = new JFileChooser();

jfChooser.setCurrentDirectory(new java.io.File("."));

jfChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (jfChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { 
System.out.println("getCurrentDirectory(): "+  jfChooser.getCurrentDirectory());
System.out.println("getSelectedFile() : "+  jfChooser.getSelectedFile());
tfPath.setText(jfChooser.getSelectedFile().getAbsolutePath()); // the selected path set to textfield which is lated get by the program
}
else {
System.out.println("No Selection ");
}

Я правильно понимаю путь. Например, здесь я получаю путь (в ОС Windows)

String choosedPath=tfPath.getText().trimm();

Теперь на самом деле я хочу программно создать другой каталог по заданному пути (т.е. внутри каталога новой папки).

Для этого у меня есть новое имя каталога «newdir», поэтому строка, переданная конструктору файлов для создания этого каталога, выглядит следующим образом:

File createFolder = new File("choosedPath"+"\\"+"newdir");

Теперь проблема в том, что мое приложение может работать в Windows или может работать в Linux, поэтому разделитель пути к файлу различается (например, «/» для Windows и «\» для Linux)

Как мне преодолеть эту проблему, чтобы я получал правильные косые черты в пути в соответствии с ОС?


person Param-Ganak    schedule 18.04.2011    source источник
comment
вам следует проверить песочницу форматирования и научиться форматировать свой код для следующего вопроса.   -  person justkt    schedule 18.04.2011
comment
В Java вы можете использовать косую черту в путях к файлам Windows, и java справится с этим. Как уже говорили другие, File.Seperator - это правильное решение, не зависящее от ОС. Однако вы можете обойтись без использования косой черты везде.   -  person Jberg    schedule 18.04.2011


Ответы (2)


new File(choosedPath, "newDir");

Разделитель файлов, зависящий от платформы, будет выбран автоматически.

Вы также можете использовать File.separator, чтобы получить разделитель, зависящий от платформы, для построения строки, но у вас будет больше кода, чем в первом решении.

person Alois Cochard    schedule 18.04.2011

Используйте File.separator вместо / или \ .

person MByD    schedule 18.04.2011