我正在尝试解压缩一些zip文件,它的大小约为65兆。下面的代码段:

此方法实际上将文件解压缩:

public synchronized void execute(Path zipFile) {

final ProcessBuilder builder = new ProcessBuilder("/bin/unzip",zipFile.toAbsolutePath().toString(), "-d", dir.toAbsolutePath().toString());

FutureTask task = new FutureTask(new Callable() {

@Override public Integer call() {

try {

System.out.println("started and waiting");

int status = builder.start().waitFor();

System.out.println("status: " + status);

return status;

} catch (InterruptedException e) {

} catch (IOException e) {

}

return 0;

}

});

List> tasks = new ArrayList>();

tasks.add(task);

System.out.println("task added");

ExecutorService executor = Executors.newCachedThreadPool();

for (FutureTask t : tasks) {

executor.submit(t);

System.out.println("submitted");

}

executor.shutdown();

System.out.println("shutdown");

}

那个执行者/未来的东西只是为了确保我正确地做。在类Finder中调用此方法,该类在目录中查找zip文件并尝试将其解压缩。它基于此代码http://docs.oracle.com/javase/tutorial/essential/io/walk.html

具体来说:

@Override

public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {

if (find(file)) {

synchronized(Finder.class) {

executor.execute(file);

}

}

return CONTINUE;

}

现在的问题。真的很有趣。每当我通过此代码提取某些内容时,该zip文件实际上就会被解压缩,但是只有某些目录会被解压缩,而其他目录则不会。例如,我有一个目录为temp

foo和bar的zip文件,但解压缩后仅存在temp和foo目录,并且未提取bar。

输出是:

task added

submitted

started and waiting

shutdown

为什么没有“状态=某物”输出?

我不明白为什么会这样。当我手动解压缩时,它会正确解压缩。

//编辑

这成功了

@Override

public synchronized void execute(String file, String dest) {

ProcessBuilder pb = new ProcessBuilder("/bin/unzip","-qq", file, "-d", dest);

pb.redirectErrorStream(true);

try {

Process p = pb.start();

InputStream is = p.getInputStream();

InputStreamReader r = new InputStreamReader(is);

BufferedReader in = new BufferedReader(r);

String line;

while ((line = in.readLine()) != null) {

// because of the -qq option, it does actually write out nothing

System.out.println(line);

}

} catch (IOException ex) {

System.err.println(ex.getMessage());

}

}

java解zip压缩包命令_Java进程-无法解压缩zip文件相关推荐

  1. java解压中文乱码_java使用解压zip文件,文件名乱码解决方案

    File outFileDir = new File(outDir); if (!outFileDir.exists()) { boolean isMakDir = outFileDir.mkdirs ...

  2. linux zip压缩包大小,Linux中巧用zip命令压缩和解压缩文件

    在Windows中,我们用得最多的解压缩软件就是WinRAR了,这个软件对我们实现解压缩非常方便.但是如果在Linux系统中,我们还可以尝试用命令来实现对文件的解压缩,这篇文章主要介绍在Linux中用 ...

  3. JAVA解压压缩包后的中文乱码问题

    java代码对于zip压缩包的解压.压缩等等操作,建议使用zip4j.相关的文章有很多,不再赘述.此处只讨论解压缩之后可能出现的中文乱码问题. 问题代码: public static void unZ ...

  4. java获取被占用的文件进程_java – 进程无法访问该文件,因为它正被另一个进程使用...

    我有一段代码监视目录以添加文件.每当将新文件添加到目录时,将挑选该文件的内容并在kafka上发布,然后删除该文件. 这在我发出单个请求时有效,但是一旦我将代码从jMeter请求5或10个用户请求,内容 ...

  5. java word转成表格_java将Word/Excel/PDF文件转换成HTML整理

    项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下: 一.使用Jacob转换Word,Excel为HTML "JACOB一个Java-COM中间件. ...

  6. Linux解压压缩包到同名目录,里面的文件会自动覆盖吗?

    目录 1.结论 2.背景 3.验证过程 3.1.现有文件目录 3.2.压缩包文件目录 3.3.解压操作 3.4.解压完成效果 1.结论 会自动覆盖:相同路径下已经存在的文件将被覆盖,如果不存在的文件将 ...

  7. linux 解压zip压缩包命令

    unzip 文件名.zip -d 解压位置 例如:unzip 微信.zip -d demowx

  8. java如何调用linux命令_java程序中如何调用linux命令

    java程序中如何调用linux命令 作为一个Java开发人员,有些常用的Linux命令必须掌握.即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令.因为很多服 ...

  9. java.exe占用cpu高_Java进程cpu占用过高问题解决

    cpu是时分(time division)的,操作系统里有很多线程,每个线程的运行时间由cpu决定,cpu会分给每个线程一个时间片,时间片是一个很短的时间长度,如果在时间片内,线程一直占有,则是100 ...

最新文章

  1. matlab球坐标曲线,matlab绘制曲线subplotsphere球面坐标绘制饼图
  2. Android 新手常见的10个误区(下)
  3. 某油企产成品标准成本估算逻辑
  4. mysql 查看当前连接数 和 最大连接数
  5. Spring 更好地处理 Struts 动作
  6. 724 Find Pivot Index
  7. spring boot 整合RESTFUL服务
  8. 内存中有两个4字节以压缩的bcd_卷积神经网络的压缩与加速 -- 剪枝(PRUNING)论文(二)...
  9. oracle 向右去整,使用table表格无端的整体向右偏移一段距离
  10. 爬虫之拉勾网职位获取
  11. JAVA-入门(内含jdk配置)
  12. C#图片处理之: 另存为压缩质量可自己控制的JPEG
  13. js 中 的时间类和 setTimeout 和setInterval
  14. 【KDD20】TAdaNet: 用于图增强元学习的任务自适应网络
  15. 首席架构师是怎样炼成的?今晚直播!
  16. java 解析二进制文件保存为txt文件
  17. ActiveX控件使用总结
  18. js的中文在网页中显示为乱码
  19. 【小程序源码】头像组合多种分类并支持姓氏头像制作生成
  20. 前台可以用if elseif吗_划重点美容仪的介质用完了,可以用自己的精华吗?

热门文章

  1. 超高清壁纸|文件收集
  2. 10大古镇,你去过几个?
  3. vxworks固件分析
  4. c语言互质欧拉函数,互质与欧拉函数学习笔记
  5. 水果店怎么吸引顾客进店消费,水果店如何快速吸引人进店
  6. python怎么打印网页_教你分分钟开发一个属于自己的python模块(一)——能够直接在浏览器打印的方法...
  7. linux系统cpu温度监控,用软件lm_sensors监测Linux系统和CPU温度
  8. python通过librados库通过底层的rados操作ceph的对象存储和块存储
  9. Unity3D C#中 String.Format的格式限定符
  10. webscoket学习