2017-08-19 45 views
0

我有一個zip文件(在jar文件中),我想讀取init。 我知道我可以使用getResourceAsStream(...)輕鬆讀取txt文件,避免錯誤「URI不分層」。 但現在肯定我會如何做zip文件。如何閱讀jar文件中的zip文件

以下是我的代碼,但是當我將代碼導出到runnable jar並運行它時,它會引發「URI not hierachical error」錯誤。

URL fileLocation = ChemicalSynonyms.class.getClassLoader().getResource("sciome/workbench/resources/chemicalSynonym/" + strFileName); 
     File file = new File(fileLocation.toURI()); 

     // it is a zip file 
     ZipFile zipFile = new ZipFile(file); 
     Enumeration<? extends ZipEntry> entries = zipFile.entries(); 
     ZipEntry entry = entries.nextElement(); 
     InputStream is = zipFile.getInputStream(entry); 
     BufferedReader buf = new BufferedReader(new InputStreamReader(is)); 
     String lineJustFetched = null; 
     String[] wordsArray; 

     // read each line 
     lineJustFetched = buf.readLine(); 
+0

哪條線會拋出錯誤?第一行是 – ssc327

+0

。我知道txt文件,它應該是getresourceasstream而不是getresource,但不知道我將如何處理zip文件 – user1631306

+0

不能加載資源文件流並將其附加到ZipFile類?或者可能在文件系統中創建臨時文件,然後加載。 –

回答

0

它可以通過使用掃描儀來完成。例如:

 InputStream is = MainClass.class.getClassLoader().getResourceAsStream(file location with zip file name); 
     ZipInputStream zis = new ZipInputStream(is); 
     ZipEntry ze = zis.getNextEntry(); 
     Scanner sc = new Scanner(zis); 

     String[] wordsArray; 
     while (sc.hasNextLine()) 
     { 
      .... 
     }