Есть ли встроенный кросс-платформенный способ в Java
для разбора строки пути Windows
и извлечения корневого пути (включая букву диска) для Windows?Извлечение буквы диска из строки пути Windows
Согласно Java SE documentation, можно использовать класс java.nio.file.Path
, например.
String path = "C:\\this\\is\\a\\windows\\file path.txt"
Path p = Paths.get(path);
String drive = p.getRoot();
Однако строительство Path
объект OS-специфический, то есть, если приведенный выше код будет возвращать букву диска, только если она выполняется в Windows
; в противном случае он просто возвращает null
.
Конечно, можно использовать пользовательский подход (например, регулярное выражение или простоструйную обработку), чтобы получить букву диска, если она есть, но есть ли какой-либо межплатформенный путь, уже реализованный в Java для этого?
* «Есть ли встроенный кросс-платформенный способ в Java для синтаксического анализа строки пути Windows и извлечения буквы диска?» * - Нет, поскольку этот вид побеждает цель «кросс-платформенной» – MadProgrammer
Это наиболее конечно же, нет и даже документация Java SE для метода getRoot() 'подразумевает иное. По сути, приложениям должна быть предоставлена возможность обрабатывать пути из всех операционных систем одинаково, независимо от ОС, на которых они работают. Это определение «кросс-платформенный», и класс Path нарушает это, вопреки его собственной документации. – PNS
* «На самом деле, приложениям должна быть предоставлена возможность обрабатывать пути из всех операционных систем одинаковым образом» * - Согласовано, но путь представляет собой концепцию ОС, и я имею в виду, что Windows является единственной ОС, которая имеет понятие буквы диска, корневой путь unix - это просто «/». Если мы говорим о точках монтирования, то это совсем другое, это моя точка зрения. Я не хочу спорить с вами об этом, у вас есть проблема, которую вы хотите решить, которую я не совсем понимаю, но, похоже, нашел другое рабочее решение. – MadProgrammer