我试图使用Java编写的外部罐子。例如,我有两个jar文件中读取文件。 一个是“foo.jar中”另一个是“bar.jar”。 里面的“bar.jar”的是该文件为“foo-跳回到bar.txt”。 如何从“bar.jar”使用“foo.jar中”代码...里面读取该文件为“foo-跳回到bar.txt”? 这甚至可能..? 我知道我可以使用阅读foo.jar中的iside文件
this.getClass().getClassLoader().getResourceAsStream("foo-bar.txt");
但我不知道如何从外部罐子做吧..有人可以帮助我吗?
使用的jar URL打开连接的示例代码
InputStream in = null;
String inputFile = "jar:file:/c:/path/to/my.jar!/myfile.txt";
if (inputFile.startsWith("jar:")){
try {
inputURL = new URL(inputFile);
JarURLConnection conn = (JarURLConnection)inputURL.openConnection();
in = conn.getInputStream();
} catch (MalformedURLException e1) {
System.err.println("Malformed input URL: "+inputURL);
return;
} catch (IOException e1) {
System.err.println("IO error open connection");
return;
}
}
如果罐子在classpath那么getResourceAsStream
会的工作,但要注意,它会发现在你的类路径中的第一个实例。 如果foo.jar中和bar.jar都包含这个文件,那么它会返回是首次在类路径为准罐子。
从罐子阅读使用JarFile.getEntry
和JarFile.getInputStream