用Java获取所有DVD驱动器

Mic*_*rry 4 java dvd cross-platform file

获取驱动器根目录后,Java中是否存在跨平台方式来检查是否有任何驱动器:

  • 一个DVD驱动器
  • ...包含磁盘?

我希望用户能够选择DVD进行播放,并将选项缩小到DVD驱动器,而不是包括其他驱动器(如笔式驱动器,硬盘驱动器等)在这种情况下会有所帮助.如果我能得到这样的驱动器列表,显示哪些包含磁盘将再次有用(同样的原因.)

搜索后我虽然没有找到任何方法来做这个不涉及平台特定的hackery.那里有什么吗?

pru*_*nge 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>");
    }
}  
Run Code Online (Sandbox Code Playgroud)

在我的系统上,它给出了以下内容(驱动器D中的CD,其余硬盘或网络共享):

C:\: NTFS
D:\: CDFS
H:\: NTFS
M:\: NTFS
S:\: NTFS
T:\: NTFS
V:\: <error getting store details>
W:\: NTFS
Z:\: NTFS
Run Code Online (Sandbox Code Playgroud)

因此,对文件存储的type()的查询应该这样做.

如果CD不在驱动器中,则抛出getFileStore()调用

java.nio.file.FileSystemException:D ::设备尚未就绪.

  • 这不是跨平台的.在使用EXT4的Linux上,输出为:/:rootfs (4认同)