【问题标题】:How to read from the CD drive using Java on Windows如何在 Windows 上使用 Java 从 CD 驱动器读取
【发布时间】:2014-05-23 01:01:25
【问题描述】:

我一直在尝试用 Java 编写音频 CD 翻录器,以便了解它们的工作原理。我似乎无法弄清楚如何从 CD 驱动器上实际读取歌曲。我设法打开了 .cda 文件,但除非我可以访问 CD 上的扇区,否则这些文件不是很有用。我尝试使用下面的代码打开 D: 驱动器(这是我计算机上的 CD 驱动器),但它给出了 File Not Found 错误。我猜这是因为 CD 驱动器不是文件。是否有任何其他类型的输入流,或者我可以从 CD 驱动器读取不同的方式。我已经搜索了很长时间,但找不到任何有用的东西。

public class learning 
{
    public static void main(String[] args) throws IOException 
    {   
        FileInputStream input = new FileInputStream( "D:\\" );
    }
}

具体报错信息是:

Exception in thread "main" java.io.FileNotFoundException: D:\ (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at learning.main(learning.java:5)

干杯丹尼尔

【问题讨论】:

  • 我怀疑文件系统中是否有音频 CD。
  • 对不起,我不明白你的意思
  • FIleInputStream 从文件系统读取。音频 CD 不包含文件。
  • 啊,是的,我想知道是否有可以打开 CD 的不同输入流

标签: java windows cd-rom


【解决方案1】:

为此有一个操作系统项目:Ripper

神奇之处在于 GrabEncodePanel.javagetCDDADir()getCDDAStream() 函数(我害怕发布实际来源,因为那样我也必须发布许可证......)

编辑我今天也学到了一些东西:根据this FAQ,这只是在 Linux 上简单明了的@

【讨论】:

  • 当我尝试使用“URL url = new URL("cdda:/dev/cdrom");”据说“未知协议:cdda”
  • @DanielBraithwaite 我编辑了我的答案,看来这种方法只适用于 Linux...
  • 嗯,在任何操作系统上都一样:获取实际设备的句柄并读取它。只是 Unix-likes 在可访问的文件系统中有那些,而例如Windows 有一个更高级别的层次结构,其中包含那些通常无法用于 Java 等抽象的层次结构。
猜你喜欢
  • 1970-01-01
  • 2012-10-04
  • 2015-07-05
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多