JAVA可以解压zip文件是因为ZIP文件的算法是开源的。但是RAR文件的算法确实不公开的啊。虽然我们可以用windows命令来解压RAR文件但是我发现他只能解压一次,而且比较慢,相当于在程序运行时又开始了一个进程来解压rar文件。后来我决定用ZIP文件。
代码如下:
String filePath = this.getServlet().getServletContext()
.getRealPath("/"); // 取得当前路径
String path = filePath + "IEBOOK\\";
File ff=new File(path);
if(!ff.exists()){
ff.mkdirs();
}
String[] filetype = fileone.getFileName().split("\\.");
String truefiletype = filetype[1];
String temp = String.valueOf(System.currentTimeMillis());
String fileyi = temp + "." + truefiletype;
String zipFileName = path + fileyi; //zip文件的位置
String extPlace = path + temp + "\\";//将zip文件解压后的位置
//开始解压
try {
ZipFile zipfile = new ZipFile(zipFileName);
InputStream in = null;
ZipEntry entry = null;
File files = new File(extPlace);
if (files.exists() == false) {
files.mkdirs();
}
String inpath = extPlace;
Enumeration ea = zipfile.getEntries();
while (ea.hasMoreElements()) {
entry = (ZipEntry) ea.nextElement();
String entryName = entry.getName();
if (entry.isDirectory()) {
File file = new File(extPlace + entryName);
file.mkdirs();
inpath += file.getName();
} else {
File newfile = new File(extPlace
+ "\\"
+ entryName.substring(0, entryName
.lastIndexOf("/") + 1));
System.out.println("aaa:" + newfile.toString());
if (newfile.exists()) {
} else {
newfile.mkdirs();
}
newfile = new File(extPlace + File.separator
+ entryName);
newfile.createNewFile();
FileOutputStream os = new FileOutputStream(newfile);
in = zipfile.getInputStream(entry);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
os.write(buf, 0, len);
}
os.close();
in.close();
}
}
zipfile.close();
} catch (Exception e) {
e.printStackTrace();
}
这样可以实现解压,但是发现用
File dd=new File(zipFileName);
dd.deleteOnExit();
将ZIP文件删除却上不掉,很奇怪???
分享到:
相关推荐
本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种广泛使用的文件归档格式,它可以将多个文件和目录组合成一个单一的可压缩文件,方便存储和传输。在Java中...
Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
3. **解压缩文件** 解压ZIP文件则需要一个`ZipInputStream`实例,它包装在一个`FileInputStream`中,指向ZIP文件。通过调用`getNextEntry`方法,你可以逐个访问ZIP文件中的每个条目,然后创建相应的文件或目录,将...
在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对...`UnZip.java`和`UnZip2.java`文件可能是这种功能的具体实现,通过阅读它们的源代码,可以深入了解Java解压ZIP文件的各种策略和技巧。
- **解压缩文件**:使用`unzip()`方法可以解压缩整个Zip文件,或者通过`extractFile()`或`extractFolder()`方法提取指定的文件或目录。 - **加密**:`zip4j`支持AES 128/256位加密,你可以设置密码保护Zip文件,...
虽然Ant不直接用于解压缩文件,但可以与Java代码结合使用,例如通过Ant任务来调用`CompressFileUtils`进行解压缩操作。Ant提供了一系列的任务,如`unzip`,可以直接在构建脚本中用于解压缩文件。 至于标签“文件解...
在给定的压缩包文件中,包含了一个名为"JAVA解压ZIP格式的压缩包.docx"的文档,这可能是对解压过程的详细说明或补充信息。在实际操作中,你可以将上述代码与这个文档结合,以获得更深入的理解和实践指导。
在这个场景中,我们关注的是如何使用Java来实现文件压缩包的上传以及在服务器上的解压缩。Java作为一种强大的编程语言,提供了丰富的库来支持这样的操作,特别是在涉及到SFTP(Secure File Transfer Protocol)时,...
### JAVA解压ZIP多层目录文件(需ant.jar) #### 概述 本文将详细介绍一个Java方法,该方法用于解压包含多层目录结构的ZIP文件,并能够支持中文文件名。这种方法利用了Apache Ant库中的`org.apache.tools.zip....
在Java编程环境中,解压ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包或系统...以上就是使用Java解压ZIP文件的基本步骤和关键知识点。通过理解并应用这些概念,你可以轻松地处理任何ZIP文件的解压缩任务。
在Java编程环境中,解压缩ZIP或RAR格式的文件是一项常见的任务,这主要涉及到I/O流、文件操作以及压缩和解压缩库的使用。本篇将深入讲解如何在Java中实现这个功能,同时会介绍一些相关的工具和源码。 首先,对于ZIP...
在Java编程环境中,处理压缩和解压缩文件是一项常见的任务,特别是在数据存储、文件传输和备份等领域。本项目专注于使用Java实现带密码保护的ZIP文件的压缩和解压功能。这是一项安全措施,允许用户对敏感文件进行...
当需要向已存在的ZIP文件追加文件时,首先使用`ZipUtil`解压缩ZIP文件到一个临时目录,然后在该目录中添加新的文件,最后重新压缩整个目录并覆盖原有的ZIP文件。以下是大致的步骤: - 使用`ZipUtil`的`unzip`方法...
在Java编程环境中,上传并处理ZIP和RAR压缩文件是一项常见的任务,特别是在文件传输、数据存储以及备份场景下。本文将详细讲解如何实现这个功能,包括文件上传、实时进度跟踪、指定解压路径以及解压过程。 首先,让...
本文将深入探讨如何使用Java来获取ZIP文件的名称以及如何高效地解压缩这些文件,特别是通过多线程来提高性能。 首先,我们需要引入Java的内置库`java.util.zip`,它提供了处理ZIP文件的类和接口。主要使用的类有`...
在Java编程环境中,处理压缩文件是一项常见的任务,特别是在数据传输、存储优化或应用程序资源管理时。Zip格式是一种广泛使用的文件压缩标准,它允许我们将多个文件和目录打包成一个单一的可压缩文件。本文将深入...
4. **源代码实现**:实践中提供的源代码展示了如何使用Java API来实现文件和目录的压缩与解压缩。这可能包括读取文件,创建压缩流,写入数据到压缩流,以及从压缩流中读取和写入文件等步骤。 5. **文件操作**:在...
沙漏哦2022-09-16 16:00:57原证Java解压缩文件,尤其对于Rar5.0版本的解压实现 项目描述 junrar已经不再支持Rar5版本的压缩文件。sevenzipjbinding对于Rar5压缩包的解压是调用本地7z软件进行解压的,如果本机环境...
Java自动解压缩文件是编程领域中的一个重要话题,尤其是在服务器端应用中,经常需要处理上传的压缩文件并进行解压操作。Java提供了丰富的API来支持这一功能,主要涉及到`java.util.zip`包中的类,如`ZipInputStream`...
3. **解压缩文件**:与压缩相反,`unzipFiles()`方法可能利用`ZipInputStream`来读取ZIP文件并解压到指定目录。通过循环遍历输入流中的每个`ZipEntry`,创建对应的目标文件,然后将其内容复制出来。 4. **路径和...