В различных операционных системах различается разделитель пути:
- Для Windows это \
- Для Unix-систем это /
Для того, чтобы при работе с файлами учесть это различие можно использовать следующие подходы:
- Использовать значение системного свойства
System.getProperty(“file.separator”)
- Использовать
File.separator
- Задавать разделитель вручную
Использование системного свойства file.separator
Полный код приведен ниже:
package ru.mydesignstudio.file; import java.io.File; import java.io.IOException; public class CreateFilepathSystemProperty { public static void main(String[] args) { String separator = System.getProperty("file.separator"); System.out.println("Разделитель: " + separator); String userDir = System.getProperty("user.dir"); System.out.println("Пользовательская папка: " + userDir); String filename = "createFileWithSeparator1.txt"; String filepath = userDir + separator + filename; File file = new File(filepath); try { if (file.createNewFile()) { System.out.println("Файл создан успешно"); } else { System.out.println("Ошибка при создании файла"); } } catch (IOException e) { e.printStackTrace(); } } }
Результат выполнения:
Разделитель: / Пользовательская папка: /Users/abarmin/IdeaProjects/file Файл создан успешно Process finished with exit code 0
Использование File.separator
Пример с File.separator
незначительно отличается от предыдущего:
package ru.mydesignstudio.file; import java.io.File; import java.io.IOException; public class CreateFilepathSystemProperty { public static void main(String[] args) { String separator = File.separator; System.out.println("Разделитель: " + separator); String userDir = System.getProperty("user.dir"); System.out.println("Пользовательская папка: " + userDir); String filename = "createFileWithSeparator2.txt"; String filepath = userDir + separator + filename; File file = new File(filepath); try { if (file.createNewFile()) { System.out.println("Файл создан успешно"); } else { System.out.println("Ошибка при создании файла"); } } catch (IOException e) { e.printStackTrace(); } } }
Результат выполнения:
Разделитель: / Пользовательская папка: /Users/abarmin/IdeaProjects/file Файл создан успешно Process finished with exit code 0
Задаем разделитель вручную
package ru.mydesignstudio.file; import java.io.File; import java.io.IOException; public class CreateFilepathSystemProperty { public static void main(String[] args) { String system = System.getProperty("os.name").toLowerCase(); System.out.println("Операционная система: " + system); String separator; if (system.contains("win")) { separator = "\\"; } else { separator = "/"; } System.out.println("Разделитель: " + separator); String userDir = System.getProperty("user.dir"); System.out.println("Пользовательская папка: " + userDir); String filename = "createFileWithSeparator2.txt"; String filepath = userDir + separator + filename; File file = new File(filepath); try { if (file.createNewFile()) { System.out.println("Файл создан успешно"); } else { System.out.println("Ошибка при создании файла"); } } catch (IOException e) { e.printStackTrace(); } } }
Результат выполнения:
Операционная система: mac os x Разделитель: / Пользовательская папка: /Users/abarmin/IdeaProjects/file Ошибка при создании файла Process finished with exit code 0