Найти все буквы дисков в Java - PullRequest
18 голосов
/ 09 сентября 2008

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

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

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

РЕДАКТИРОВАТЬ: Я знаю, что есть переменная% PATH%, но она не так интегрирована, как в системах UNIX. Например, я ищу приложение OpenOffice. Такое программное обеспечение обычно не находится в% PATH%.

Ответы [ 5 ]

36 голосов
/ 09 сентября 2008

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: список дисков Java, первый удар: -)

2 голосов
/ 01 ноября 2008

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

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

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

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

0 голосов
/ 19 января 2010

Используйте JNI. Это идеально подходит для кода C ++. Вы можете не только перечислить все диски, но и получить соответствующий тип диска (съемный, локальный диск или CD-ROM, DVD-ROM ... и т.д.)

0 голосов
/ 09 сентября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...