Что лучше? Использование двойной косой черты (‘\’) в качестве разделителя файлов или Files.seperator для удаления зависимостей операционной системы при работе с файлами в Java

#java

#java #файловые системы

Вопрос:

Итак, я создал приложение, которое выполняет некоторое чтение / запись в файлы. Я хочу сделать обход пути независимым от операционной системы.

Разные операционные системы используют разные символы в качестве разделителей файлов. Например, системы Microsoft Windows используют "" , а системы UNIX используют "/" . Когда приложения должны выполняться на разных платформах, использование жестко запрограммированных разделителей файлов может привести к неправильному выполнению логики приложения.

Итак, я придумал использовать двойную косую черту назад '\' . Но теперь я пришел к тому, что могу использовать

  public static final String FILE_SEPARATOR = System.getProperty("file.separator");
 public static final String PATH_SEPARATOR = System.getProperty("path.separator");
  

ссылка здесь http://www.javapractices.com/topic/TopicAction.do?Id=38 .

Я ошибаюсь? Каков правильный способ?

Комментарии:

1. Windows понимает /, но Unix-подобные системы не понимают \ , поэтому, если вы вообще должны использовать / не \ .

Ответ №1:

Один из простых способов — использовать File.separator разделитель между именами путей и File.pathSeparator разделитель между путями. Они идентичны свойствам "file.separator" и "path.separator" .

System.getProperty("file.separator") вернет «/» в UNIX и «» в Windows.

System.getProperty("path.separator") вернет «:» в UNIX и «;» в Windows.

Вы можете проверить http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html .

Комментарии:

1. Мой вопрос заключается в том, что использование ‘\’ или File.seperator одинаковы или есть разница. Если есть разница, какой способ лучше?

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

Ответ №2:

В Java в зависимости от того, на какой системе выполняется ваша программа, разделитель может отличаться.
Например, в файловой системе Linux это разделитель ‘/’.
В файловой системе Windows это разделитель ».

Поэтому, если вы используете File.separator, вы будете уверены, что будет использован правильный разделитель, и никаких проблем не возникнет.