Java MP3文件流无法传递参数
所以我创建了一个程序,用一个文件输入流读取一个MP3文件。在互联网上查找我的问题后,它与此处所示的数组有关,但是,我不知道如何解决此问题,因为我是Java初学者: 文件宋=新文件(参数[0]) 然后我遇到了这个错误: 线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常:0 位于com.java24hours.ID3Reader.main(ID3Reader.java:11) 这是我的密码:Java MP3文件流无法传递参数,java,arrays,mp3,filestream,indexoutofboundsexception,Java,Arrays,Mp3,Filestream,Indexoutofboundsexception,所以我创建了一个程序,用一个文件输入流读取一个MP3文件。在互联网上查找我的问题后,它与此处所示的数组有关,但是,我不知道如何解决此问题,因为我是Java初学者: 文件宋=新文件(参数[0]) 然后我遇到了这个错误: 线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常:0 位于com.java24hours.ID3Reader.main(ID3Reader.java:11) 这是我的密码: package com.java24hours;
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());
}
}
}
有人能帮我吗?谢谢大家! 您没有为程序提供文件名 此程序需要一个文件名(Mp3文件名)作为参数,它将放在
参数[0]
中
如果在没有参数的情况下运行程序:
java com.java24hours.ID3Reader
您可以得到如下输出:
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:0
位于com.java24hours.ID3Reader.main(ID3Reader.java:11)
因为参数
数组为空
调用此程序时需要提供文件名,例如
java com.java24hours.id3阅读器theDarksideofmon.mp3
其中mon.mp3的黑暗面必须是有效文件
如果硬盘上没有该文件名,您将获得
错误--java.io.FileNotFoundException:thedarksideofmon.mp3(没有这样的文件或目录)
你应该在你的代码中加入更多的检查 您的格式设置有点不正确。。。代码中的哪一行是第11行?如何运行此代码?您是否将文件名作为输入传递了?Derp,是的,参数[0]不存在,因此尝试取消引用时失败。您应该为此添加一个检查,例如:if(arguments.length==0){throw new Exception(“未提供参数”);}
另一个可能的问题是,此代码只处理ID3v1元数据。ID3v2元数据位于文件的开头,结构非常不同;看,但是。。。。“我不知道如何解决这个问题,因为我是Java的初学者…”-您不适合要求StackOverflow为您修复程序中的错误。即使你是初学者。这是一个问答网站,不是免费的节目服务。谢谢!我忘了添加我在Netbeans中执行此操作,但我会修复此错误!非常感谢。好吧,如果这解决了你的问题,请考虑接受我的答案: