Платформо-независимые пути в Java

Добавьте интерактивную опцию «i», например sudo docker exec -it mongo-test mongo

. Здесь вы можете увидеть все опции: https://docs.docker.com/engine/reference/commandline/exec/ [ 111]

63
задан Moshe Slavin 24 March 2019 в 17:31
поделиться

7 ответов

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

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

50
ответ дан 24 November 2019 в 16:09
поделиться

Только 10 лет слишком поздно.... "Не имеет значения просто, что использование '/'" является только половиной верного (хорошо, три четверти). Необходимо думать о том, куда данные прибывают из.

, Если Вы получаете путь в Java, он будет использовать '/' при создании пути в Java, он поймет '/'

, Но что относительно путей, которые вводятся к программе?

предположим у меня есть ряд сценариев, которые создают конфигурацию (Свойства) файл. Предположим, что одна из переменных конфигурации является INTERESTING_FILE, и мы генерируем это, чтобы быть именем файла включая путь. Теперь предположите, что я хочу извлечь фактическое Имя файла из этого, таким образом, я говорю

String[] filename = INTERESTING_FILE.split("/");

, Это будет неправильно себя вести на Windows Systems, однако

String[] filename = INTERESTING_FILE.split(pathSeparator);

будет работать (как будет, промывая его через класс Путей).

я предполагаю, что точка, я не принял бы '/', собирается работать в каждом случае.

0
ответ дан 24 November 2019 в 16:09
поделиться

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

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

13
ответ дан 24 November 2019 в 16:09
поделиться

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

5
ответ дан 24 November 2019 в 16:09
поделиться

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

7
ответ дан 24 November 2019 в 16:09
поделиться

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

http://grepcode.com/file/repository.grepcode.com/java/eclipse.org/3.5/org.eclipse.equinox/common/3.5.0/org/eclipse/core/runtime/Path.java /? v = source

1
ответ дан 24 November 2019 в 16:09
поделиться

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

91
ответ дан 24 November 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: