Подтвердить что ты не робот

Найти все буквы дисков в Java

Для проекта, над которым я работаю. Мне нужно искать исполняемый файл в файловой системе. Для UNIX-производных я предполагаю, что пользователь имеет файл в переменной $PATH, но в Windows этого нет.

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

Любая помощь?

EDIT: Я знаю, что есть переменная% PATH%, но она не такая интегрированная, как в системах UNIX. Например, приложение, которое я ищу, это OpenOffice. Обычно такое программное обеспечение не будет в% PATH%.

4b9b3361

Ответ 2

Взгляд "везде" может быть очень грязным.

Посмотрите на дисковод для компакт-дисков, и он вращается. Это может быть очень шумно.

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

Возможно (для Windows-машин) вы должны просто посмотреть в стартовом меню. Если в OOo ничего не указано, оно, вероятно, не установлено. Если это так, пользователь, вероятно, является продвинутым пользователем, у которого не будет проблем с указанием местоположения вручную.

Ответ 3

В Windows действительно есть переменная среды PATH. Он имеет другой синтаксис из Unix, потому что он использует точку с запятой (;) как разделитель вместо двоеточия (:), и вам нужно следить за цитируемыми строками, которые могут содержать пробелы. Но, там.

Если этот другой программный установщик добавляет свой собственный каталог в переменную среды PATH, тогда вы можете положиться на это. Однако, как вы заметили, установщикам Windows обычно не нужно добавлять путь приложения к PATH, потому что они устанавливают ярлык меню запуска или что-то еще.

Для букв дисков в Java один подход будет состоять в том, чтобы попробовать их всех, их будет только самое большее 24 (от C до Z). Или вы можете выложить и запустить "сетевое использование" и проанализировать результаты, хотя это немного беспорядочно.

Ответ 4

Использовать JNI. Это идеально подходит для кода С++. Не только вы можете перечислить все диски, но и получить соответствующий тип диска (съемный, локальный диск или компакт-диск, dvd-rom... и т.д.)

Ответ 5

Конечно, существует переменная окружения PATH в Windows.

%PATH%  Эта переменная содержит список каталогов, разделенных точкой с запятой, в которых интерпретатор команд будет искать исполняемые файлы. Эквивалентен переменной UNIX $PATH.