4

ドライブ ルートのリストを取得した後、Java で次のいずれかのドライブかどうかを確認するクロスプラットフォームの方法はありますか。

  • DVDドライブ
  • ...ディスクが含まれていますか?

ユーザーが再生用の DVD を選択できるようにしたいのですが、この場合、他のドライブ (ペン ドライブ、ハード ドライブなど) を含めるのではなく、オプションを DVD ドライブに絞り込むことが役立ちます。そのようなドライブのリストを取得できれば、どのドライブにディスクが含まれているかを示すことが再び役立ちます (同じ理由です)。

探し回った後、プラットフォーム固有のハッキングを伴わないこれを行う方法が見つかりませんでした。そこに何かありますか?

4

1 に答える 1

6

Java 7の新しいファイル システム APIは、これを行うことができます。

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にCDがあり、残りのハードディスクまたはネットワーク共有があります):

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

したがって、ファイル ストアのtype()に対するクエリで実行する必要があります。

ドライブに CD がない場合、getFileStore() 呼び出しがスローされます。

java.nio.file.FileSystemException: D:: デバイスの準備ができていません。

于 2011-08-12T00:14:05.493 に答える