Sams教授自己Java 24小时第六版Rogers Cadenhead MP3第20章MP3文件错误

时间:2013-01-22 00:44:05

标签: java file-io arguments runtime-error filenotfoundexception

我是一名java新手试图浏览本文标题中列出的书。这也是我发布堆栈溢出的第一个问题。这本书似乎没有论坛所以我决定在这里问。

我在第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)

我已经把头发拉出来试图找到一些可以帮助我解决这个问题的东西,但我似乎无法找到任何可以转化为这个问题的东西。我非常感谢你能给我的任何信息。如果还有任何需要知道的信息,你可以回答之前只说出“我会得到它”这个词。

4 个答案:

答案 0 :(得分:2)

在“设置参数”时,您可能需要在引号之间放置路径;像这样:

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

答案 1 :(得分: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"

答案 2 :(得分:2)

在run命令中将文件参数括在引号中,否则第一个字符串标记将用作arguments[0],如命令shell传入的那样:

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

答案 3 :(得分:1)

如错误消息所示,文件名被解析为C:\Documents。这是因为Documents之后的空格表示第一个参数的结束,第二个参数的开始。您需要将参数包装在引号中,以便将其视为单个参数。

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