Я знаю относительный путь к файлу и хочу иметь возможность обрабатывать его как объект File
как в Linux, так и в Windows.
Каков наилучший способ определения независящих от платформы путей в Java?
Я знаю относительный путь к файлу и хочу иметь возможность обрабатывать его как объект File
как в Linux, так и в Windows.
Каков наилучший способ определения независящих от платформы путей в Java?
Класс File
содержит следующие общедоступные элементы, которые можно использовать для конкретных путей к файлу:
static String pathSeparator
:
Системный ключ-разделитель пути, представленный как строка для удобства.static char pathSeparatorChar
:
Системно-зависимый символ-разделитель пути.static String separator
:
Системно-зависимый символ-разделитель по умолчанию, представленный как строка для удобства.static char separatorChar
:
Системно-зависимый символ-разделитель по умолчанию.
Просто используйте /
. Я использую его в течение 20 лет. Никогда не проблема.
Вы можете использовать любой разделитель путей в Java, он будет работать как в Unix, так и в Windows.
Если вы все еще хотите использовать разделитель системных путей, существует свойство File.separator
, которое даст вам право в зависимости от текущей системы.
Для корня вы можете использовать listRoots()
, который дает вам массив root, в Unix-системах будет только один элемент, и столько, сколько у вас есть диски в Windows.
Вы можете использовать статическое поле File.separator для получения символа разделителя платформы для путей к файлам
Java довольно умна в отношении путей в объектах File. Я просто использую что-то вроде "../foo/bar", и он работает на этих двух платформах плюс MacOSX.
java 7 также поддерживает использование Paths
здесь
Путь получен путем вызова метода getPath для файловой системы по умолчанию.
Затем вы можете получить файл из него, позвонив:
File fileSystemObtainedFile = Paths.get("C:\\foo\\bar.txt").toFile();
Лично мне нравится использовать класс Path из Eclipse для обработки путей вообще, который вы можете просто использовать автономно с небольшими изменениями, поскольку он достаточно изолирован.