import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import org.apache.log4j.Logger; public class FileDeCompressUtil { private static final Logger logger = Logger .getLogger(FileDeCompressUtil.class); private static final int BUFFER_SIZE = 2048; private FileDeCompressUtil() { } public static List<String> decompressFileAndDeleteOrig(File zippedFile, String destPath) throws IOException { List<String> decompressFileNameList = decompressFile(zippedFile, destPath); if (zippedFile.exists()) { zippedFile.delete(); } else { logger.error(String.format( "zippedFile: [%s] doesn't exists, thus failed delete", zippedFile.getName())); } return decompressFileNameList; } public static List<String> decompressFile(File zippedFile, String destPath) throws IOException { InputStream is = new FileInputStream(zippedFile); List<String> decompressFileNameList = decompressFile(is, destPath); is.close(); return decompressFileNameList; } public static List<String> decompressFile(InputStream is, String destPath) throws IOException { List<String> decompressFileNameList = new ArrayList<String>(); byte[] buffer = new byte[BUFFER_SIZE]; logger.info(String.format("Start decompressFile, destPath: [%s]", destPath)); File folder = new File(destPath); if (!folder.exists()) { logger.warn(String.format( "destPath: [%s] doesn't exits, thus create dir for it", destPath)); folder.mkdirs(); } ZipInputStream zis = new ZipInputStream(is); ZipEntry ze = zis.getNextEntry(); while (ze != null) { String fileName = ze.getName(); String unzippedFileNameWithPath = destPath + File.separator + fileName; File newFile = new File(unzippedFileNameWithPath); File parentDir = new File(newFile.getParent()); logger.info(String.format("decompressed file: [%s]", unzippedFileNameWithPath)); decompressFileNameList.add(unzippedFileNameWithPath); if (!parentDir.exists()) { logger.warn(String .format("parentDir: [%s] doesn't exits, thus create dir for it", parentDir.getAbsolutePath())); parentDir.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(); logger.info(String.format( "Finished decompressFile. decompressFileNameList: [%s]", decompressFileNameList)); return decompressFileNameList; } }
import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.List; import org.junit.Test; public class FileDeCompressUtilTest { @Test public void decompressFileTest() throws FileNotFoundException, IOException { File file = new File("src/test/resources/test.zip"); String destPath = "src/test/resources"; List<String> decompressFileNameList = FileDeCompressUtil .decompressFileAndDeleteOrig(file, destPath); for (String decompressFileName : decompressFileNameList) { new File(decompressFileName).delete(); } } }
Reference Links:
1) http://www.mkyong.com/java/how-to-decompress-files-from-a-zip-file/
相关推荐
在Java编程语言中,我们可以利用内置的`java.util.zip`包来实现文件的压缩和解压缩功能。这个包提供了一系列的类,如`ZipOutputStream`用于创建ZIP压缩文件,`ZipInputStream`则用于读取和解压缩ZIP文件。在本教程中...
本项目“Java 项目-java的JAVA文件压缩与解压缩实践.zip”提供了一个实战示例,帮助开发者了解如何在Java中实现这一功能。 首先,我们需要介绍的是Java中的`java.util.zip`包,这个包提供了对ZIP文件格式的支持。在...
`java.util.zip`是Java标准库提供的用于处理ZIP文件的API,它包含了处理压缩和解压缩功能的基本类。在本主题中,我们将深入探讨如何使用Java来对文件进行zip压缩和解压缩,并提及`ant.jar`的作用。 首先,让我们来...
ZipService.DecompressFile('MyArchive.zip', 'DestinationFile.txt'); end; ``` 在这个例子中,`CreateOleObject`函数用于实例化在DLL中注册的COM对象,然后就可以调用其`CompressFile`和`DecompressFile`方法了...
public static void decompressFile(String inputFile, String outputFile) throws IOException { GZIPInputStream gzipIn = new GZIPInputStream(new FileInputStream(inputFile)); FileOutputStream fileOut = ...
Java语言在处理文件压缩与解压缩任务时,通常会使用内置的`java.util.zip`库。这个库提供了对ZIP和GZIP格式的支持,使得我们能够方便地读取、创建和修改压缩文件。在这个"java语言,解压缩文件夹.zip"的压缩包中,...
public static void decompressFile(String inputFile, String outputFile) throws IOException { try (FileInputStream fis = new FileInputStream(inputFile); GZIPInputStream gis = new GZIPInputStream(fis)...
为此,专门的工具应运而生,如"tools for mapplestory files and map decompress.zip"中的WZ-Explorer-Rebuild。本文将深入探讨这一工具及其在MapleStory文件处理和地图解压缩中的应用。 WZ-Explorer-Rebuild是一款...
在Java编程语言中,`java.util.zip`包提供了一系列的类和接口,使得开发者能够方便地处理各种压缩格式,特别是ZIP格式。本文将详细讲解如何使用这些类来实现ZIP文件的压缩与解压缩功能。 首先,我们要理解ZIP文件...
def compress_to_zip(input_file, output_zip): with zipfile.ZipFile(output_zip, 'w', zipfile.ZIP_DEFLATED) as zipf: zipf.write(input_file) compress_to_zip('data.nc', 'data.nc.zip') ``` 在这个例子中...
Files.copy(in, outputFile.toPath(), StandardCopyOption.REPLACE_EXISTING); in.close(); } } rarFile.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 这段代码首先创建了一个`...
Java提供了多种库来支持这项功能,其中Java PDFBox是一个专注于处理PDF文档的库,而与文件压缩相关的库则有Java的内置API `java.util.zip` 和第三方库如Apache Commons Compress。 首先,让我们讨论Java的内置压缩...
Java Zip压缩和解压缩是Java开发中常见的文件处理任务,主要涉及到`java.util.zip`包中的类和方法。本文将详细讲解如何使用Java进行Zip文件的压缩与解压缩操作,并结合给定的标签"源码"和"工具"来探讨实际应用场景。...
LZSS.exe Called after to decryption to decompress the script ExtractExeIcon.exe Used to extract the MainIcon(s) from the ScriptExe Doc\ Additional document about decompiling related stuff Tidy\ ...
本篇将详细介绍如何使用Java实现FTP(File Transfer Protocol)传输以及RAR文件的处理。 首先,Java FTP上传和下载主要依赖于`java.net`和`java.io`包中的类。`java.net.Socket`用于建立FTP连接,`java.io`用于输入...
2. **stream_compress.c** 和 **stream_decompress.c**:这两个文件提供了流式压缩和解压缩的功能。流式处理允许数据在内存或磁盘流中连续处理,而不需要一次性加载整个文件到内存,这对于处理大文件或实时数据流...
for I := 2 to MaxRow do begin Strs.Clear; for J := 1 to MaxCol do begin // 获取 Excel 的数据第 i 行,第 j 列单元格内的数据 Strs.Add(Sheet.Cells[i, j].Value); end; List.Add(Strs.CommaText); ...
标题中的“lz4-java-1.6.0.zip”指的是一个使用Java编写的LZ4压缩库的版本1.6.0的压缩包文件。LZ4是一种快速的数据压缩算法,广泛应用于各种软件和系统中,以提高数据传输和存储效率。这个版本是针对Java平台的实现...
This is a shared library for Android, iOS, OSX, Windows, Linux and webGL to decompress 7z (7zip) files and to compress/decompress zip/gzip (.zip/.gz), LZ4 (.lz4), brotli (.br), fastLZ files and ...
实验五 实现哈夫曼编码.cpp`会包含实现这些步骤的函数,例如,可能有`buildHuffmanTree`用于构建树,`generateCodes`用于生成编码,以及`compress`和`decompress`用于压缩和解压缩数据。通过分析这些函数,我们可以...