我正在尝试读取一个zip文件,它位于我的插件项目中。这是文件层次结构:
dom-module
在资源目录中有一个我要加载的zip文件my.super.project
- Referenced Libraries
- JRE System Library
- src
- binary
- META-INF
- resources
。
这就是我尝试这样做的方式:
myarchive.zip
无法找到该文件(byte[] buffer = new byte[1024];
try {
ZipInputStream zis = new ZipInputStream(new FileInputStream(
"resources/myarchive.zip"));
// get the zipped file list entry
ZipEntry ze = zis.getNextEntry();
while (ze != null) {
String fileName = ze.getName();
File newFile = new File(OUTPUT_DIR
+ File.separator + fileName);
// create all non exists folders
new File(newFile.getParent()).mkdirs();
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
ze = zis.getNextEntry();
}
zis.closeEntry();
zis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
),这意味着相对路径出现了问题。
问题是什么?如何阅读zip文件?
答案 0 :(得分:0)
我建议:
还考虑使用NIO.2文件API来处理路径和使用ZIP文件(使用ZIP file system provider)。
答案 1 :(得分:0)
取决于你如何运行它,这是一个独立的还是内部的tomcat或者这样?
尝试添加前缀“/”或者应该工作
URL url = this.getClass().getResource("/resources/myarchive.zip");
ZipInputStream zis = new ZipInputStream(new FileInputStream( url.getFile() );