我无法理解这段代码的错误。
public void run(String url) {
try {
FileInputStream file;
file = new FileInputStream(this.getClass().getResource(url));
Player p = new Player(file);
p.play();
}catch(Exception e){
System.err.print( url + e);
}
}
当我尝试运行它时,它说我“找不到适合FileInputStream(URL)的构造函数”。为什么会这样?
答案 0 :(得分:3)
使用:
getClass().getResourceAsStream(classpathRelativeFile)
用于类路径资源new FileInputStream(pathtoFile)
用于文件系统资源。答案 1 :(得分:2)
使用getResourceAsStream
更简单InputStream in = getClass().getResourceAsStream(url);
Player p = new Player(file);
答案 2 :(得分:2)
将文件放在类路径的文件夹的根目录(生成.class
文件的文件夹)中,然后使用以下语句:
InputStream inputStream =
getClass().getClassLoader().getResourceAsStream(filePath);
Player p = new Player(inputStream );
这里filePath
是相对文件路径w.r.t.根文件夹。
答案 3 :(得分:1)
FileInputStream构造函数的参数是File,String ...(请参阅http://docs.oracle.com/javase/6/docs/api/java/io/FileInputStream.html),但Class.getResource返回URL(请参阅http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html),而不是File或String。 尝试使用
public void run(String url) {
try {
FileInputStream file;
file = new FileInputStream(new File(this.getClass().getResource(url).toURI()));
Player p = new Player(file);
p.play();
}catch(Exception e){
System.err.print( url + e);
}
}