1.读取zip中文件名,返回文件名列表
//读取zip文件内的文件,返回文件名称列表
public static List readZipFileName(String path){
List list = new ArrayList<>();
try {
ZipFile zipFile = new ZipFile(path);
Enumeration extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
list.add(entries.nextElement().getName());
} catch (IOException e) {
e.printStackTrace();
return list;
2.读取zip中文件的内容
//读取zip文件内的文件,返回文件内容列表
public static List readZipFile(String path){
List list = new ArrayList<>();
List> ddlList=null;
try {
ZipFile zipFile = new ZipFile(path);
InputStream in = new BufferedInputStream(new FileInputStream(path));
ZipInputStream zin = new ZipInputStream(in);<
1.读取zip中文件名,返回文件名列表//读取zip文件内的文件,返回文件名称列表public static List readZipFileName(String path){List list = new ArrayList<>();try {ZipFile zipFile = new ZipFile(path);Enumeration extends ZipEntry> e...
Zip
InputStream.getNextEntry()____________获取压缩
文件
内下一个
文件
,如果当前位置是
文件
夹则从
文件
夹内获取
Zip
File.getInputStream(
Zip
Entry) __________获取
压缩包
内部
文件
的输入流
Workbook wb = null;
Zip
File zf = new
Zip
File(url);
InputStream i...
最近开发的时候遇到要获取到
zip
压缩包
里面的
文件
内容
,一开始的想法是先通过代码执行解压,然后
读取
文件
内容
,但是感觉好麻烦,于是度了一下,发现可以无需解压直接
读取
,而且还是JDK提供给我们的工具。
解决方案就是通过
Zip
InputStream来
读取
。
Zip
InputStream在JDK中的util包中,而我们平时用的FileInputStream等都是在io包中的。
示例如下:
@Test
public void test() throws Exception {
//获取文.
import
java
.io.File;
import
java
.io.FileInputStream;
import
java
.io.FileOutputStream;
import
java
.io.IOException;
import
java
.util.
zip
.
Zip
E
在
Java
中,可以使用
Zip
InputStream类来解压
ZIP
文件
,包括
嵌套
的
ZIP
文件
。以下是解压
嵌套
的
ZIP
文件
的
Java
代码示例:
```
java
import
java
.io.*;
import
java
.util.
zip
.*;
public class Un
zip
Nested
Zip
{
public static void main(String[] args) throws IOException {
String
zip
FilePath = "path/to/nested.
zip
";
String destDirPath = "path/to/destination/dir";
un
zip
Nested(
zip
FilePath, destDirPath);
public static void un
zip
Nested(String
zip
FilePath, String destDirPath) throws IOException {
// 创建目标
文件
夹
File destDir = new File(destDirPath);
if (!destDir.exists()) {
destDir.mkdir();
// 创建
Zip
InputStream对象
Zip
InputStream zis = new
Zip
InputStream(new FileInputStream(
zip
FilePath));
// 遍历
Zip
文件
中的条目
Zip
Entry entry = zis.getNextEntry();
while (entry != null) {
String entryName = entry.getName();
// 如果是
嵌套
的
Zip
文件
,则递归解压
if (entry.isDirectory() || entryName.endsWith(".
zip
")) {
String sub
Zip
FilePath = destDirPath + File.separator + entryName;
un
zip
Nested(sub
Zip
FilePath, destDirPath + File.separator + entryName.substring(0, entryName.lastIndexOf(".")));
} else {
// 解压当前条目
String filePath = destDirPath + File.separator + entryName;
extractFile(zis, filePath);
// 关闭当前条目的输入流,
读取
下一个条目
zis.closeEntry();
entry = zis.getNextEntry();
// 关闭
Zip
InputStream
zis.close();
public static void extractFile(
Zip
InputStream zis, String filePath) throws IOException {
// 创建目标
文件
File destFile = new File(filePath);
// 创建目标
文件
夹
File destDir = destFile.getParentFile();
if (!destDir.exists()) {
destDir.mkdirs();
// 写入
文件
内容
byte[] buffer = new byte[1024];
FileOutputStream fos = new FileOutputStream(destFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
fos.close();
该示例代码会递归解压
嵌套
的
ZIP
文件
,并将所有解压出来的
文件
保存到目标
文件
夹中。需要注意的是,该代码中没有处理加密或密码保护的
ZIP
文件
。如果需要解压这样的
ZIP
文件
,需要在
Zip
InputStream对象创建时设置密码或解密方式。