3

java を使用して外部 jar 内からファイルを読み込もうとしています。たとえば、2 つの jar ファイルがあります。1 つは「foo.jar」で、もう 1 つは「bar.jar」です。「bar.jar」の中には「foo-bar.txt」というファイルがあります。「foo.jar」のコードを使用して「bar.jar」内からファイル「foo-bar.txt」を読み取るにはどうすればよいですか...? これも可能ですか..?を使用して foo.jar の側からファイルを読み取ることができることを知っています

this.getClass().getClassLoader().getResourceAsStream("foo-bar.txt");

しかし、外部jarからそれを行う方法がわかりません..誰かが私を助けることができますか?

4

2 に答える 2

6

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;
  }
} 
于 2012-11-08T17:43:30.157 に答える
4

jar がクラスパスにある場合は機能しますが、クラスパスで最初のインスタンスgetResourceAsStreamが検出されることに注意してください。foo.jar と bar.jar の両方にこのファイルが含まれている場合、クラスパスで最初にある jar が返されます。

jar の使用からそれを読み取るにはJarFile.getEntryJarFile.getInputStream

于 2012-11-08T17:42:57.167 に答える