1

在我的 Scala(在 Java 之上运行)应用程序中,我想获取包含 DVD 媒体的所有驱动器的列表,例如:

  • /dev/scd0 星际迷航 DS9 DVD1
  • /dev/scd0 4400 DVD1

不确定是否可以获得光盘的名称,但无论如何路径对我来说很重要。

我更喜欢纯 Java / Scala 解决方案(使用 file.io 的东西)。如果这不可能,访问正确的 Linux 文件也可以(例如 /proc/something)。

提前致谢!

4

2 回答 2

1

我认为您对 java.io.* 不走运,但如果您不介意调用 Linux 命令,您可以通过以下方式组装数据:

  1. 调用“mount”并捕获第一列输出。
  2. 对从步骤 1 中捕获的每个值调用“volname”。

根据 volname 的手册页,它只返回 ISO-9660 文件系统(例如 DVD)的数据,因此可以忽略任何返回空的设备路径。

于 2009-04-24T19:36:04.057 回答
0

使用纯 Java 代码获取驱动器是一种(未经测试的)可能性。至少在 Windows 上。

它有点hacky并且在linux下不起作用(因为我相信linux从sun那里得到的集成爱并不多)。

import javax.swing._
import javax.swing.filechooser._
val chooser = new JFileChooser()
val view = chooser.getFileSystemView()

FileSystemView 类提供了一些功能,例如询问可能的根是否是驱动器(isDrive())。Swing 使用它来向您显示带有正确图标的文件选择器,因此它应该在 Windows 下工作,因为 IIRC 它在那里显示正确的符号。在 Linux 下,不幸的是它只显示“/”根。

这在 linux 下不起作用的原因之一可能是 linux 开发人员不断改变他们将此类信息呈现给用户空间的首选方式。目前是 IIRC hal 和 dbus。也许 SUN 不想在每次更改时都发布新的 java 版本。

如果纯 java 没有削减它,也许你可以使用一点 jni(如果你使用 JNA 之类的工具,它不再那么难使用)来直接访问 linux apis。我没做过,有兴趣可以试试。

于 2009-06-17T11:52:40.933 回答