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

getResourceAsStreamを使用する方が簡単です

InputStream in = getClass().getResourceAsStream(url);
Player p = new Player(file);
于 2012-12-15T20:32:00.437 に答える
2

クラスパスのフォルダー(.classファイルが生成されるフォルダー)のルートにファイルを配置し、次のステートメントを使用します。

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

filePathルートフォルダからの相対ファイルパスは次のとおりです。

于 2012-12-15T20:44:22.087 に答える
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 に答える