Java 如何使用此.getClass().getResource(字符串)?
我不明白这段代码的错误是什么Java 如何使用此.getClass().getResource(字符串)?,java,Java,我不明白这段代码的错误是什么 public void run(String url) { try { FileInputStream file; file = new FileInputStream(this.getClass().getResource(url)); Player p = new Player(file); p.play(); }catch(Exce
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)的构造函数”。为什么会发生这种情况?使用getResourceAsStream更简单
InputStream in = getClass().getResourceAsStream(url);
Player p = new Player(file);
使用:
用于类路径资源getClass().getResourceAsStream(classpathRelativeFile)
用于文件系统资源newfileinputstream(pathtoFile)
- FileInputStream构造函数的参数是File,String。。。(请参阅),但Class.getResource返回URL(请参阅),而不是文件或字符串。
尝试使用
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);
}
}
将文件放在类路径(生成
.class
文件的文件夹)的根文件夹中,然后使用以下语句:
InputStream inputStream =
getClass().getClassLoader().getResourceAsStream(filePath);
Player p = new Player(inputStream );
这里
filePath
是根文件夹的相对文件路径w.r.t.,因为没有以URL为参数的FileInputStream构造函数。非常感谢。它起作用了。但是你知道我不明白我们什么时候,怎样,在哪里使用它。这对我来说非常复杂。@Tushar:什么是复杂的?让我知道,我将尝试向您解释。我只想知道getClass().getClassLoader().getResourceAsStream(文件路径)行是如何运行的;可以工作。@Tushar:getClass().getClassLoader()查找编写此代码的当前类的类加载器。类加载器知道从何处加载类文件。此文件需要放置在同一位置。getResourceAsStream从该位置读取文件并返回输入流。如果您需要更多的解释,请告诉我。当然,如果您提供更多的解释,我将非常满意。方法类.getResource(String)返回URL,而文件构造函数的参数是String,或URI。。。(见附件)。方法返回表示URL的URI对象。您可以在和中看到URI和URL之间的不同