【发布时间】:2017-07-27 03:14:12
【问题描述】:
所以我正在创建这个使用文件输入流读取 MP3 文件的程序。在互联网上查找了我的问题后,它与此处显示的数组有关,但是,我不知道如何解决此问题,因为我是 Java 的初学者: 文件歌曲 = new File(arguments[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());
}
}
}
谁能帮我解决这个问题?谢谢!
【问题讨论】:
-
您的格式有点不对...您的代码中的哪一行是第 11 行?
-
你是如何运行这段代码的?您是否传递了文件名作为输入?
-
Derp,是的,arguments[0] 不存在,因此当您尝试取消引用它时它会失败。您应该为此添加一个检查,例如:
if (arguments.length == 0) { throw new Exception("No arguments provided"); } -
另一个可能的问题是这段代码只处理 ID3v1 元数据。 ID3v2 元数据在文件的开头,结构有很大不同;见en.wikipedia.org/wiki/ID3。
-
但是......“我不知道如何解决这个问题,因为我是Java的初学者......” - 你不适合问StackOverflow 为您修复程序中的错误。即使你是初学者。这是一个问答网站,不是免费的编程服务。
标签: java arrays mp3 filestream indexoutofboundsexception