从相对路径读取(zip)文件

时间:2015-11-19 13:32:13

标签: java file eclipse-plugin zip inputstream

我正在尝试读取一个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文件?

2 个答案:

答案 0 :(得分:0)

我建议:

  • 检测当前主罐的位置
  • 从此位置确定安装根目录
  • 从安装根目录的位置确定ZIP文件的路径。

还考虑使用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() );