有没有办法辨别驱动器是否是没有光盘的DVD / CD /蓝光驱动器?

时间:2015-11-25 06:33:35

标签: java file dvd

在这里查看这个问题后:Get all DVD drives in Java

在我看来,当驱动器内有cd / dvd时,有一种方法可以辨别硬盘驱动器和DVD / CD驱动器。但是,如果驱动器为空,则该方法会失败。

我的问题是:4年后是否有一种方法可以识别哪些驱动器是硬盘驱动器,哪些驱动器是cd / dvd / blueray驱动器,即使这些驱动器内部没有CD / DVD /蓝光?

编辑: 目标操作系统是Linux

2 个答案:

答案 0 :(得分:2)

您可以运行系统命令,还是必须是纯Java?如果您可以运行系统命令,请尝试:

Runtime.getRuntime().exec("more /proc/sys/dev/cdrom/info");

这会给你类似的东西:

CD-ROM information, Id: cdrom.c 3.20 2003/12/17

drive name:     sr0
drive speed:        24
drive # of slots:   1
Can close tray:     1
Can open tray:      1
Can lock tray:      1
Can change speed:   1
Can select disk:    0
Can read multisession:  1
Can read MCN:       1
Reports media changed:  1
Can play audio:     1
Can write CD-R:     1
Can write CD-RW:    1
Can read DVD:       1
Can write DVD-R:    1
Can write DVD-RAM:  1
Can read MRW:       1
Can write MRW:      1
Can write RAM:      1

有关更全面的信息,您可以运行:

Runtime.getRuntime().exec("hwinfo --cdrom");

应该有一行如下:

Feature: CD-R, CD-RW, DVD-R, DVDRAM

如果您的系统中有蓝光驱动器,我会期待BDROM,BD-ROM,BD-R,BD-RW或类似的东西

答案 1 :(得分:0)

hwinfo --cdrom将提供比/ proc / sys / dev / cdrom / info更多的完整信息。

这里是一个示例,该系统带有内部DVD-RW驱动器,外部紧凑型DVD-RW驱动器和外部全尺寸DVD-RW驱动器。请注意/ proc / sys / dev / cdrom / info的重要解析细节:它为多个设备添加了列而不是块。还要注意第一行,这表明它所依赖的代码是在很早以前编写的:

CD-ROM information, Id: cdrom.c 3.20 2003/12/17

drive name:         sr2 sr1 sr0
drive speed:        48  8   40
drive # of slots:   1   1   1
Can close tray:     1   1   1
Can open tray:      1   1   1
Can lock tray:      1   1   1
Can change speed:   1   1   1
Can select disk:    0   0   0
Can read multisession:  1   1   1
Can read MCN:       1   1   1
Reports media changed:  1   1   1
Can play audio:     1   1   1
Can write CD-R:     1   1   1
Can write CD-RW:    1   1   1
Can read DVD:       1   1   1
Can write DVD-R:    1   1   1
Can write DVD-RAM:  1   1   1
Can read MRW:       1   0   1
Can write MRW:      1   0   1
Can write RAM:      1   1   1

请注意,紧凑型驱动器速度较慢,并且不支持雷尼尔山数据包写入(MRW)。另请注意,这些驱动器被列为支持DVD-R(读取:“ DVD破折号R”;没有“ DVD减去R”之类的东西),但是没有行指示它们是否支持DVD + R( “ DVD加R”)。这些驱动器中至少有一个可能会。

使用“ hwinfo --cdrom”获取更多信息,以下是其匹配的功能行(有更多数据可用;为简洁起见,此处将其剥离:

Features: CD-R, CD-RW, DVD, DVD-R, DVD-RW, DVD-R DL, DVD+R, DVD+RW, DVD+R DL, DVD-RAM, MRW, MRW-W
Features: CD-R, CD-RW, DVD, DVD-R, DVD-RW, DVD-R DL, DVD+R, DVD+RW, DVD+R DL, DVD-RAM
Features: CD-R, CD-RW, DVD, DVD-R, DVD-RW, DVD-R DL, DVD+R, DVD+RW, DVD+R DL, DVD-RAM, MRW, MRW-W

我们现在看到许多要点,您可能会说:“哦,那。”是的,哦。哦,DVD-R和DVD-RW之间的格式之战。哦,双层光盘。哦,DVD-RAM。哦,带多碟盒的CD换盘器(“可以选择磁盘”)。

我将稍后查看是否可以从BD-ROM驱动器中提取数据并进行更新。但是结果是,您可能将不得不以几种不同的方式来询问系统以获得完整的结果。

媒体检查使事情进一步复杂化。特别是,要说出有缺陷的光盘,空白光盘,在该特定驱动器中无法使用的有效光盘,打开的托盘以及各种其他情况之间的区别,可能需要熟悉发送低级IOCTL命令发送到设备。几乎可以使用任何一种语言来完成此操作,但是对于那些没有用C编写系统软件的人来说,这似乎很陌生。