2

我是一名 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

4 回答 4

2

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

java ID3Reader "C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\Java24\Where The Moon Came From - Moonbrows (Twin Of Pangaea)."
于 2013-01-22T00:46:27.587 回答
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"
于 2013-01-22T00:46:31.567 回答
2

在您的运行命令中将您的文件参数括在引号中,否则第一个字符串标记将用作arguments[0],由命令外壳传入:

java ID3Reader  "C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\Java24\Where The Moon Came From - Moonbrows (Twin Of Pangaea).mp3"
于 2013-01-22T00:46:44.423 回答
1

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

java ID3Reader "C:\Documents and Settings\..."
于 2013-01-22T00:46:51.693 回答