Java MP3文件流无法传递参数

时间:2017-07-27 03:14:13

标签: java arrays mp3 filestream indexoutofboundsexception

所以我创建了这个使用文件输入流读取MP3文件的程序。在我的问题的互联网上查找后,它与这里显示的数组有关,但是,我不知道如何解决这个问题,因为我是Java的初学者: 文件歌曲=新文件(参数[0]);

然后我遇到了这个错误:

线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:0     在com.java24hours.ID3Reader.main(ID3Reader.java:11)​​

这是我的代码:

package com.java24hours;
import java.io.*;



public class ID3Reader {

    private static String[] arguments;
    public static void main(String[] arguments) {

        File song = new File(arguments[0]);
        try (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 (IOException ioe) {
            System.out.println("Error -- " + ioe.toString());
        }
    }


}

任何人都可以帮我这个吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您没有为程序提供文件名。

该程序需要一个文件名(Mp3文件名)作为参数,该名称将放在arguments[0]中。

如果你运行没有参数的程序: java com.java24hours.ID3Reader

你得到了这个输出: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at com.java24hours.ID3Reader.main(ID3Reader.java:11)

因为arguments数组为空。

调用此程序时需要提供文件名,例如

java com.java24hours.ID3Reader TheDarkSideOfTheMoon.mp3

TheDarkSideOfTheMoon.mp3必须是有效文件。

如果您的硬盘上没有文件名,您将获得一个 Error -- java.io.FileNotFoundException: TheDarkSideOfTheMoon.mp3 (No such file or directory)

您应该在代码中添加更多支票!