Ответ 1
http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listRoots()
File[] roots = File.listRoots();
for(int i = 0; i < roots.length ; i++)
System.out.println("Root["+i+"]:" + roots[i]);
google: list диски java, первый удар: -)
Для проекта, над которым я работаю. Мне нужно искать исполняемый файл в файловой системе. Для UNIX-производных я предполагаю, что пользователь имеет файл в переменной $PATH, но в Windows этого нет.
Я могу смело предположить, что файл находится не более чем на 2 уровня в глубину файловой системы, но я не знаю, на каком диске это будет. Я должен попробовать все диски, но я не могу понять, как перечислить все доступные диски (которые имеют назначенную ему букву).
Любая помощь?
EDIT: Я знаю, что есть переменная% PATH%, но она не такая интегрированная, как в системах UNIX. Например, приложение, которое я ищу, это OpenOffice. Обычно такое программное обеспечение не будет в% PATH%.
http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listRoots()
File[] roots = File.listRoots();
for(int i = 0; i < roots.length ; i++)
System.out.println("Root["+i+"]:" + roots[i]);
google: list диски java, первый удар: -)
Взгляд "везде" может быть очень грязным.
Посмотрите на дисковод для компакт-дисков, и он вращается. Это может быть очень шумно.
Посмотрите на сетевой диск, и он может быть очень медленным. Возможно, сервер выключен, и вам может потребоваться дождаться минут, пока он не истечет.
Возможно (для Windows-машин) вы должны просто посмотреть в стартовом меню. Если в OOo ничего не указано, оно, вероятно, не установлено. Если это так, пользователь, вероятно, является продвинутым пользователем, у которого не будет проблем с указанием местоположения вручную.
В Windows действительно есть переменная среды PATH. Он имеет другой синтаксис из Unix, потому что он использует точку с запятой (;) как разделитель вместо двоеточия (:), и вам нужно следить за цитируемыми строками, которые могут содержать пробелы. Но, там.
Если этот другой программный установщик добавляет свой собственный каталог в переменную среды PATH, тогда вы можете положиться на это. Однако, как вы заметили, установщикам Windows обычно не нужно добавлять путь приложения к PATH, потому что они устанавливают ярлык меню запуска или что-то еще.
Для букв дисков в Java один подход будет состоять в том, чтобы попробовать их всех, их будет только самое большее 24 (от C до Z). Или вы можете выложить и запустить "сетевое использование" и проанализировать результаты, хотя это немного беспорядочно.
Использовать JNI. Это идеально подходит для кода С++. Не только вы можете перечислить все диски, но и получить соответствующий тип диска (съемный, локальный диск или компакт-диск, dvd-rom... и т.д.)
Конечно, существует переменная окружения PATH
в Windows.
%PATH%
Эта переменная содержит список каталогов, разделенных точкой с запятой, в которых интерпретатор команд будет искать исполняемые файлы. Эквивалентен переменной UNIX $PATH.