簡體   English   中英

java中的問題以及從linux中的CD驅動器讀取數據

[英]Problems with java and reading data from a CD drive in linux

我一直在嘗試編寫一個簡單的音頻開膛手,我可以用來了解CODEC的不同之處,但是我已經陷入了第一步,我無法讓我的程序從CD中讀取,下面的代碼就是我一直在嘗試的使用

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;


public class learning 
{
    public static void main(String[] args) throws IOException 
    {   
        File cd = new File( "/dev/sr0" );
        RandomAccessFile rawAccess = new RandomAccessFile( cd, "r" );
        byte[] content = new byte[20];
        rawAccess.seek(19613);
        rawAccess.readFully(content);

        System.out.println(content);
    }

}

但它給了我下面的錯誤

Exception in thread "main" java.io.IOException: Input/output error
    at java.io.RandomAccessFile.readBytes(Native Method)
    at java.io.RandomAccessFile.read(RandomAccessFile.java:355)
    at java.io.RandomAccessFile.readFully(RandomAccessFile.java:414)
    at java.io.RandomAccessFile.readFully(RandomAccessFile.java:394)
    at learning.main(learning.java:21)

我無法弄清楚為什么我得到這個,我雖然maby RandomFileAccess不是正確的類使用但我唯一能找到的說這應該工作

任何有關如何從java讀取CD的幫助將非常感激。

干杯丹尼爾

首先,您應該掛載登錄OS Linux的用戶可以訪問的目錄。 例如:/ mnt / cdrom或/ media / cdrom

之后打開你的mp3文件或音頻文件:

File cd = new File( "/dev/sr0/track1.mp3" );

要么

File cd = new File( "/dev/sr0/track1.dat" );

(不要忘記音頻或Mp3文件的擴展名)。

這不完全一樣,但我懷疑它會讓你去...

是否有平台無關的方式(Java?)來讀取音頻CD的TOC?

如果你不想使用內置的東西(出於教育原因), http://www.tritonus.org/是開源的,所以你可以看看他們是如何做到的。

此問題有一個與您的問題相關的相關問題和答案: 裝載和卸載硬盤驅動器

根據相關問題和接受的答案, 答案是“是”和“否”。 您可以提供使用適配器模式進行本機接口的Java API,但您還必須執行許多操作, 從而使解決方案不僅僅是Java,而是混合:

  • 創建支持mount / unmount命令創建的Java接口
  • 將接口實現為本機方法的類創建本機
  • 用C或其他語言實現這些命令。
  • OS的實現(Win,Mac,Linux)將它打包到一個jar構建中
  • 提供接口實現和加載本機庫的小工廠

如果/dev/sr0是目錄,則存在問題。 請嘗試傳遞其中一個音頻文件作為參數,例如

        File cd = new File( "/dev/sr0/track1" );

這應該是有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM