Получить все DVD приводы на Java - PullRequest
4 голосов
/ 12 августа 2011

После получения списка корней дисков существует ли в Java кроссплатформенный способ проверить, является ли какой-либо из дисков:

  • DVD-привод
  • ... что содержит диск?

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

После поиска, хотя я не нашел способа сделать это, не связанного с хакерской атакой для конкретной платформы. Там что-нибудь есть?

1 Ответ

6 голосов
/ 12 августа 2011

Новый API файловой системы в Java 7 может сделать это:

FileSystem fs = FileSystems.getDefault();

for (Path rootPath : fs.getRootDirectories())
{
    try
    {
        FileStore store = Files.getFileStore(rootPath);
        System.out.println(rootPath + ": " + store.type());
    }
    catch (IOException e)
    {
        System.out.println(rootPath + ": " + "<error getting store details>");
    }
}  

В моей системе он выдал следующее (с компакт-диском на диске D, остальным жестким диском илисетевые ресурсы):

C:\: NTFS
D:\: CDFS
H:\: NTFS
M:\: NTFS
S:\: NTFS
T:\: NTFS
V:\: <error getting store details>
W:\: NTFS
Z:\: NTFS

Таким образом, запрос о типе хранилища файлов type () должен сделать это.

Если компакт-диск не находится в приводе, getFileStore () вызовы

java.nio.file.FileSystemException: D :: Устройство не готово.

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