java 删除压缩zip文件_从ZIP存档中删除文件,而无需在Java或Python中解压缩 - java...

本文介绍了一种使用Java的高效方法,避免了解压缩大型ZIP文件来删除个别文件,通过直接操作ZIP文件系统实现。提到的代码示例展示了如何使用`java.nio.file`包来删除ZIP内的文件,节省时间和磁盘空间。
摘要由CSDN通过智能技术生成

从ZIP存档中删除文件,而无需使用Java(首选)或Python解压缩

你好

我使用包含数百个高度压缩的文本文件的大型ZIP文件。解压缩ZIP文件时,可能要花一些时间,并且很容易消耗多达20 GB的磁盘空间。我想从这些ZIP文件中删除某些文件,而不必仅解压缩并重新压缩我想要的文件。

当然,从长远来看当然可以这样做,但是效率很低。

我更喜欢用Java来做,但是会考虑使用Python

参考方案

I've found this on web

干净的解决方案,只有标准库,但是我不确定它是否包含在android sdk中。

import java.util.*;

import java.net.URI;

import java.nio.file.Path;

import java.nio.file.*;

import java.nio.file.StandardCopyOption;

public class ZPFSDelete {

public static void main(String [] args) throws Exception {

/* Define ZIP File System Properies in HashMap */

Map zip_properties = new HashMap<>();

/* We want to read an existing ZIP File, so we set this to False */

zip_properties.put("create", "false");

/* Specify the path to the ZIP File that you want to read as a File System */

URI zip_disk = URI.create("jar:file:/my_zip_file.zip");

/* Create ZIP file System */

try (FileSystem zipfs = FileSystems.newFileSystem(zip_disk, zip_properties)) {

/* Get the Path inside ZIP File to delete the ZIP Entry */

Path pathInZipfile = zipfs.getPath("source.sql");

System.out.println("About to delete an entry from ZIP File" + pathInZipfile.toUri() );

/* Execute Delete */

Files.delete(pathInZipfile);

System.out.println("File successfully deleted");

}

}

}

直接读取Zip文件中的文件-Java - java

我的情况是我有一个包含一些文件(txt,png,...)的zip文件,我想直接按它们的名称读取它,我已经测试了以下代码,但没有结果(NullPointerExcepion):InputStream in = Main.class.getResourceAsStream("/resouces/zipfile/test.txt"); Buff…Java Scanner读取文件的奇怪行为 - java

因此,在使用Scanner类从文件读取内容时,我遇到了一个有趣的问题。基本上,我试图从目录中读取解析应用程序生成的多个输出文件,以计算一些准确性指标。基本上,我的代码只是遍历目录中的每个文件,并使用扫描仪将其打开以处理内容。无论出于何种原因,扫描程序都不会读取其中的一些文件(所有UTF-8编码)。即使文件不是空的,scanner.hasNextLine()在…Java:从文件系统加载资源 - java

我的项目设定我有以下项目设置:\program.jar \images\logo.png 在我的代码中,我使用相对URL "images/logo.png"引用图像。问题如果我在目录中使用以下命令运行此程序:c:\projects\program_dir\bin\>java -jar program.jar 然后一切正常,Java能…Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值