Платформо-независимые пути в Java - PullRequest
62 голосов
/ 23 августа 2010

Я знаю относительный путь к файлу и хочу обрабатывать его как объект File в Linux и Windows.

Каков наилучший способ указать независимые от платформы пути в Java?

Ответы [ 7 ]

86 голосов
/ 24 августа 2010

Просто используйте /. Я использую это в течение 22 лет. Никогда не проблема.

48 голосов
/ 23 августа 2010

Класс File содержит следующие открытые члены, которые можно использовать для путей к файлам для конкретной платформы:

static String pathSeparator
Системно-зависимый символ-разделитель пути, представленный для удобства в виде строки.
static char pathSeparatorChar:
Системно-зависимый символ-разделитель пути.
static String separator
Системно-зависимый символ разделителя имен по умолчанию, представленный в виде строки для удобства. static char separatorChar
Системно-зависимый символ разделителя имен по умолчанию.

12 голосов
/ 23 августа 2010

Вы можете использовать любой разделитель пути в Java, он будет работать как в Unix, так и в Windows. Если вы все еще хотите использовать системный разделитель путей, есть свойство File.separator, которое даст вам правильное значение в зависимости от текущей системы.

Для root вы можете использовать listRoots(), который дает вам массив root, в Unix-системах будет только один элемент и столько же, сколько у вас дисков в Windows.

7 голосов
/ 23 августа 2010

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

5 голосов
/ 23 августа 2010

Java довольно умна в отношении путей в объектах File. Я просто использую что-то вроде "../foo/bar", и это работает на этих двух платформах плюс MacOSX.

3 голосов
/ 11 декабря 2014

Java 7 также поддерживает использование Paths здесь

Путь получается путем вызова метода getPath файловой системы по умолчанию.

Затем вы можете получить файл из него, позвонив по номеру:

File fileSystemObtainedFile = Paths.get("C:\\foo\\bar.txt").toFile();
1 голос
/ 23 августа 2010

Лично мне нравится использовать класс Path из Eclipse для обработки путей в целом, который вы можете просто использовать автономно с небольшими изменениями, поскольку он достаточно изолирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...