3

我无法理解这段代码的错误。

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) 的构造函数”。为什么会发生?

4

4 回答 4

3

利用:

  • getClass().getResourceAsStream(classpathRelativeFile)对于类路径资源
  • new FileInputStream(pathtoFile)用于文件系统资源。
于 2012-12-15T20:32:25.643 回答
2

将文件放在类路径文件夹的根目录(.class生成文件的文件夹),然后使用以下语句:

  InputStream inputStream = 
                  getClass().getClassLoader().getResourceAsStream(filePath);
  Player p = new Player(inputStream );

filePath是根文件夹的相对文件路径。

于 2012-12-15T20:44:22.087 回答
2

使用 getResourceAsStream 更简单

InputStream in = getClass().getResourceAsStream(url);
Player p = new Player(file);
于 2012-12-15T20:32:00.437 回答
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),而不是文件或字符串。尝试使用

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);
    }
}
于 2012-12-15T20:43:58.103 回答