java解zip压缩包命令_Java进程-无法解压缩zip文件
我正在尝试解压缩一些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文件相关推荐
- java解压中文乱码_java使用解压zip文件,文件名乱码解决方案
File outFileDir = new File(outDir); if (!outFileDir.exists()) { boolean isMakDir = outFileDir.mkdirs ...
- linux zip压缩包大小,Linux中巧用zip命令压缩和解压缩文件
在Windows中,我们用得最多的解压缩软件就是WinRAR了,这个软件对我们实现解压缩非常方便.但是如果在Linux系统中,我们还可以尝试用命令来实现对文件的解压缩,这篇文章主要介绍在Linux中用 ...
- JAVA解压压缩包后的中文乱码问题
java代码对于zip压缩包的解压.压缩等等操作,建议使用zip4j.相关的文章有很多,不再赘述.此处只讨论解压缩之后可能出现的中文乱码问题. 问题代码: public static void unZ ...
- java获取被占用的文件进程_java – 进程无法访问该文件,因为它正被另一个进程使用...
我有一段代码监视目录以添加文件.每当将新文件添加到目录时,将挑选该文件的内容并在kafka上发布,然后删除该文件. 这在我发出单个请求时有效,但是一旦我将代码从jMeter请求5或10个用户请求,内容 ...
- java word转成表格_java将Word/Excel/PDF文件转换成HTML整理
项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下: 一.使用Jacob转换Word,Excel为HTML "JACOB一个Java-COM中间件. ...
- Linux解压压缩包到同名目录,里面的文件会自动覆盖吗?
目录 1.结论 2.背景 3.验证过程 3.1.现有文件目录 3.2.压缩包文件目录 3.3.解压操作 3.4.解压完成效果 1.结论 会自动覆盖:相同路径下已经存在的文件将被覆盖,如果不存在的文件将 ...
- linux 解压zip压缩包命令
unzip 文件名.zip -d 解压位置 例如:unzip 微信.zip -d demowx
- java如何调用linux命令_java程序中如何调用linux命令
java程序中如何调用linux命令 作为一个Java开发人员,有些常用的Linux命令必须掌握.即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令.因为很多服 ...
- java.exe占用cpu高_Java进程cpu占用过高问题解决
cpu是时分(time division)的,操作系统里有很多线程,每个线程的运行时间由cpu决定,cpu会分给每个线程一个时间片,时间片是一个很短的时间长度,如果在时间片内,线程一直占有,则是100 ...
最新文章
- matlab球坐标曲线,matlab绘制曲线subplotsphere球面坐标绘制饼图
- Android 新手常见的10个误区(下)
- 某油企产成品标准成本估算逻辑
- mysql 查看当前连接数 和 最大连接数
- Spring 更好地处理 Struts 动作
- 724 Find Pivot Index
- spring boot 整合RESTFUL服务
- 内存中有两个4字节以压缩的bcd_卷积神经网络的压缩与加速 -- 剪枝(PRUNING)论文(二)...
- oracle 向右去整,使用table表格无端的整体向右偏移一段距离
- 爬虫之拉勾网职位获取
- JAVA-入门(内含jdk配置)
- C#图片处理之: 另存为压缩质量可自己控制的JPEG
- js 中 的时间类和 setTimeout 和setInterval
- 【KDD20】TAdaNet: 用于图增强元学习的任务自适应网络
- 首席架构师是怎样炼成的?今晚直播!
- java 解析二进制文件保存为txt文件
- ActiveX控件使用总结
- js的中文在网页中显示为乱码
- 【小程序源码】头像组合多种分类并支持姓氏头像制作生成
- 前台可以用if elseif吗_划重点美容仪的介质用完了,可以用自己的精华吗?
热门文章
- 超高清壁纸|文件收集
- 10大古镇,你去过几个?
- vxworks固件分析
- c语言互质欧拉函数,互质与欧拉函数学习笔记
- 水果店怎么吸引顾客进店消费,水果店如何快速吸引人进店
- python怎么打印网页_教你分分钟开发一个属于自己的python模块(一)——能够直接在浏览器打印的方法...
- linux系统cpu温度监控,用软件lm_sensors监测Linux系统和CPU温度
- python通过librados库通过底层的rados操作ceph的对象存储和块存储
- Unity3D C#中 String.Format的格式限定符
- webscoket学习