我從ZIP檔案使用此代碼(省略所有的catch語句和其他初始化語句)提取文件中提取的ZIP檔案文件:錯誤在Java中
zipInputStream = new ZipInputStream(new FileInputStream(file));
zipFile = new ZipFile(file);
for (Enumeration<?> em = zipFile.entries(); em.hasMoreElements();) {
String extractedFileName = em.nextElement().toString();
ZipEntry outerZipEntry = zipInputStream.getNextEntry();
if (outerZipEntry.getName().contains(searchString)) {
extractedFile = new File(outputDir + outerZipEntry.getName());
out = new FileOutputStream(outputDir + extractedFileName);
byte[] buf = new byte[1024];
int len;
while ((len = zipInputStream.read(buf)) > 0) {
out.write(buf, 0, len);
}
break;
}
}
此代碼工作正常時,在/archive.zip/file_i_need.txt中提取文件。
但是,當我試圖從/archive.zip/folder1/file_i_need.txt中提取文件時,我嘗試使用readLine()讀取文件時收到異常java.lang.NullPointerException:
String line = null ;
BufferedReader input = new BufferedReader(newFileReader(extractedFile)) ;
while((line = input.readLine()) != null) {
...
}
我已經測試了這兩種情況下,它似乎像當文件夾裏面,因爲extractedFileName是「文件夾/ file_i_need.txt」相比,只是「file_i_need.txt」這個代碼將無法正常工作。
任何建議,你可以推薦?
謝謝!
發佈完整堆棧跟蹤。 – Wug 2012-08-13 19:22:20
錯誤實際上不會在代碼中發生,它發生在我嘗試從文件讀取時發生。我正在更新帖子以獲取更多信息。 – joshualan 2012-08-13 19:24:18
Dup http://stackoverflow.com/questions/1399126/java-util-zip-recreating-directory-structure – mazaneicha 2012-08-13 19:24:47