在pom.xml中加入JAR包
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
ZipUtil.java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.util.UUID;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ZipUtil {
private static Logger logger = LoggerFactory.getLogger(ZipUtil.class);
public static void extractFolder(InputStream inputStream, String outputFolder) throws IOException
{
ZipInputStream zis = null;
try {
Charset GBK = Charset.forName("GBK");
zis = new ZipInputStream(inputStream, GBK);
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
// Create a file on HDD in the destinationPath directory
// destinationPath is a "root" folder, where you want to extract your ZIP file
String encoding = System.getProperty("file.encoding");
logger.info("encoding:"+encoding);
String fileName = new String(entry.getName().getBytes("GBK"), encoding);
File entryFile = new File(outputFolder, fileName);
// File entryFile = new File(outputFolder, entry.getName());
if (entry.isDirectory()) {
if (entryFile.exists()) {
logger.warn("Directory {0} already exists!", entryFile);
} else {
entryFile.mkdirs();
}
} else {
// Make sure all folders exists (they should, but the safer, the better ;-))
if (entryFile.getParentFile() != null && !entryFile.getParentFile().exists()) {
entryFile.getParentFile().mkdirs();
}
// Create file on disk
if (!entryFile.exists()) {
entryFile.createNewFile();
}
// and rewrite data from stream
OutputStream os = null;
try {
os = new FileOutputStream(entryFile);
IOUtils.copy(zis, os);
} finally {
// os.close();
IOUtils.closeQuietly(os);
zis.closeEntry();
}
}
}
} finally {
IOUtils.closeQuietly(zis);
}
}
public static void main(String [] args) throws IOException
{
final String INPUT_ZIP_FILE = "D:TESTING-FILE/ZIP/INPUT/应用.zip";
String OUTPUT_FOLDER = "D:/TESTING-FILE/ZIP/OUTPUT";
OUTPUT_FOLDER += File.separator + UUID.randomUUID().toString();
InputStream inputStream = new FileInputStream(new File(INPUT_ZIP_FILE));
extractFolder(inputStream, OUTPUT_FOLDER);
/*File file = new File(OUTPUT_FOLDER);
FileUtil.deleteFolder(file);*/
}
}