在Linux / Java / Scala中枚举附加的DVD驱动器

时间:2009-04-22 20:32:25

标签: java linux scala dvd

在我的Scala(在Java上运行)应用程序我想获得包含DVD媒体的所有驱动器的列表,例如像这样的东西:

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

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

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

提前致谢!

2 个答案:

答案 0 :(得分:1)

我认为你对java.io. *感到不满意但是如果你不介意调用Linux命令,你可以通过以下方式汇编数据:

  1. 调用“mount”并捕获第一列输出。
  2. 对从步骤1中捕获的每个值调用“volname”。
  3. 根据volname的手册页,它只返回ISO-9660文件系统(例如DVD)的数据,因此可以忽略任何返回空的设备路径。

答案 1 :(得分:0)

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

它有点hacky并且在linux下不起作用(因为我认为linux没有那么多来自sun的集成爱)。

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

FileSystemView clas提供了一些功能,例如询问可能的根目录 是一个驱动器(isDrive())。 Swing使用它来向文件选择器显示正确的图标 你应该在windows下工作,因为它会在那里显示正确的符号。下 不幸的是Linux只显示“/”根。

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

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