package com.to.zip;
import org.junit.jupiter.api.Test;
import java.io.*;
import java.nio.file.Path;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import static org.springframework.util.FileCopyUtils.BUFFER_SIZE;
public class JunitTestmm {
//目录下只有文件
@Test
void test1() {
String name = "D:\\huangzhengfile\\pretmp\\files\\wisdomAudit\\upload";
try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("D:\\huangzhengfile\\pretmp\\wwww.zip"))) {
//输出流最后关闭不会有问题了
File file = new File(name);
if (file.isDirectory()) {
for (File file1 : file.listFiles()) {
try (FileInputStream in = new FileInputStream(file1)) {
zipOut.putNextEntry(new ZipEntry(file1.getName()));
int temp;
byte[] bytes = new byte[1024];
while ((temp = in.read(bytes)) != -1) {
zipOut.write(bytes, 0, temp);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
} else {
try (FileInputStream in = new FileInputStream(file)) {
zipOut.putNextEntry(new ZipEntry(file.getName()));
int temp;
byte[] bytes = new byte[1024];
while ((temp = in.read(bytes)) != -1) {
zipOut.write(bytes, 0, temp);
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.getMessage();
}
}
//要打包的目录下有文件也有目录
//当前代码生成zip包解压之后所有目录的文件在一起
@Test
void test2() {
String name = "D:\\huangzhengfile\\pretmp\\files";
try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("D:\\huangzhengfile\\pretmp\\dirfile.zip"))) {
File file = new File(name);
if (file.isDirectory()) {
for (File file1 : file.listFiles()) {
if (!file1.isDirectory()) {
try (FileInputStream in = new FileInputStream(file1)) {
zipOut.putNextEntry(new ZipEntry(file1.getName()));
int temp;
byte[] bytes = new byte[1024];
while ((temp = in.read(bytes)) != -1) {
zipOut.write(bytes, 0, temp);
}
} catch (IOException ex) {
ex.printStackTrace();
}
} else {
try {
zipOut.putNextEntry(new ZipEntry(file1.getName()));
} catch (IOException e) {
e.printStackTrace();
}
compress(file1, zipOut);
}
}
} else {
try (FileInputStream in = new FileInputStream(file)) {
zipOut.putNextEntry(new ZipEntry(file.getName()));
int temp;
byte[] bytes = new byte[1024];
while ((temp = in.read(bytes)) != -1) {
zipOut.write(bytes, 0, temp);
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.getMessage();
}
}
private void compress(File file, ZipOutputStream zipOut) {
if (file.isDirectory()) {
for (File file1 : file.listFiles()) {
if (!file1.isDirectory()) {
try (FileInputStream in = new