2013-01-22 10 views
2

我是一位java新手,試圖通過本文標題中列出的書籍。這也是我發佈堆棧溢出的第一個問題。似乎沒有這本書的論壇,所以我決定在這裏問。Sams在24小時內自學Java第6版Rogers Cadenhead MP3第20章MP3文件錯誤

我在第20章:在Java 24小時內讀寫文件,並且已經獲得了ID3Reader.java項目。我正在使用Netbeans 7來創建這個項目。該代碼應該分析一個MP3文件(我使用絕對路徑創建了我的參數),並跳過除最後128個字節之外的所有內容。然後,檢查剩餘的字節以查看它們是否包含任何ID3數據。如果他們這樣做,前三個字節是數字84,65,71. 然後它按降序顯示標題,藝術家,專輯和年份。

import java.io.*; 

public class ID3Reader { 
public static void main(String[] arguments) { 
    try { 
     File song = new File(arguments[0]); 
     FileInputStream file = new FileInputStream(song); 
     int size = (int) song.length(); 
     file.skip(size - 128); 
     byte[] last128 = new byte[128]; 
     file.read(last128); 
     String id3 = new String(last128); 
     String tag = id3.substring(0, 3); 
     if (tag.equals("TAG")) { 
      System.out.println("Title: " + id3.substring(3, 32)); 
      System.out.println("Artist: " + id3.substring(33, 62)); 
      System.out.println("Album: " + id3.substring(63, 91)); 
      System.out.println("Year: " + id3.substring(93, 97)); 
     } else { 
      System.out.println(arguments[0] + " does not contain" 
       + " ID3 info."); 
     } 
     file.close(); 
    } catch (Exception e) { 
     System.out.println("Error — " + e.toString()); 
    } 
    } 

我再次將參數設置爲MP3文件所在的位置,甚至已經從本書的網站獲取了代碼。

C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\Java24\Where The Moon Came From - Moonbrows (Twin Of Pangaea). 

但是相反,我得到這個錯誤。

Error — java.io.FileNotFoundException: C:\Documents (The system cannot find the file specified) 

我已經把我的頭髮,試圖找到一些能幫助我在這個問題上,但我似乎無法找到任何我能翻譯這個問題。我非常感謝你能給我的任何信息。如果在回答之前還有更多需要了解的信息,只要說出一個字,我就能得到它。

+0

將程序的第一個參數放在逗號中:'java ID3Reader.class「c:\ ... \ file.mp3」'。 – andr

回答

2
C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\Java24\Where The Moon Came From - Moonbrows (Twin Of Pangaea) 

你有這個文件?也許你最後忘了.mp3,或者你可能從來沒有把文件放在第一位。如果沒有,更改路徑到您的文件是這樣的:

C:\Users\Somebody\Desktop\song.mp3 

另外,如果你想在一個路徑中包含空格則必須使用引號:

"C:\Path with spaces\More spaces\song_thing.mp3" 
+0

非常感謝你!非常簡單!最親切! –

+0

@CadenRatcliff不客氣:) – Doorknob

2

「設置參數」時,您可能需要在引號之間放置路徑;像這樣:

java ID3Reader "C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\Java24\Where The Moon Came From - Moonbrows (Twin Of Pangaea)." 
+1

+1 - 問題是命令外殼天真地將命令分割爲每個空間序列的參數。添加引號會告訴命令shell「這應該作爲一個參數傳遞」。 –

2

附上您的文件參數在引號中的運行命令,否則第一字符串標記將被用作arguments[0],如由命令殼傳遞:

java ID3Reader "C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\Java24\Where The Moon Came From - Moonbrows (Twin Of Pangaea).mp3" 
1

作爲由該錯誤消息指示,文件名被解析爲C:\Documents。這是因爲Documents之後的空格表示第一個參數的結束,第二個參數的開始。您需要將引號封裝爲引號,以便將其視爲單個參數。

java ID3Reader "C:\Documents and Settings\..."