2016-08-01 78 views
-1

我將一些類和庫打包到單個JAR文件中。但是當前的代碼無法像原樣那樣訪問JAR文件中的文件。如何以字符串的形式訪問JAR文件中的文件

String scenarioFile = "netlogo/Altruism.nlogo"; 
// InputStream is = this.getClass().getResourceAsStream(scenarioFile); 
simulator = HeadlessWorkspace.newInstance(); 
simulator.open(scenarioFile); 

.open需要一個字符串,但我讀到,我需要使用inputstream格式,因此它不工作。有沒有其他解決方法?

+0

什麼是'HeadlessWorkspace.'? – Tunaki

+0

@Tunaki嘿Tunaki,它的一個包「import org.nlogo.headless.HeadlessWorkspace;」 –

+0

我在那裏看到一個['openFromSource'](https://ccl.northwestern.edu/netlogo/4.1/docs/javadoc/org/nlogo/headless/HeadlessWorkspace.html#openFromSource(java.lang.String))串。也許你可以讀取一個字符串中的InputStream並將其傳遞給該方法?否則,您需要將資源複製到臨時文件中並使用該路徑... – Tunaki

回答

0

在Tunaki的幫助下,我能夠得到一個方法來做到這一點,它的工作!

我所做的就是下載commons.io.jar文件

import org.apache.commons.io.*; 

,然後使用一個InputStream來讀取文件,然後將其轉換爲字符串,並使用openFromSource方法Tunaki建議HeadlessWorkspace包的閱讀它。

InputStream is = this.getClass().getResourceAsStream(NetlogoFile); 
      String scenarioFile = IOUtils.toString(is, "UTF-8"); 
     simulator = HeadlessWorkspace.newInstance(); 
     simulator.openFromSource(scenarioFile); 
相關問題