在JDK中有一个zip工具类:
java.util.zip ? ?Provides classes for reading and writing the standard ZIP and
GZIP file formats.
使用此类可以将文件夹或者多个文件进行打包压缩操作.
在使用之前先了解关键方法:
ZipEntry(String name) ??Creates a new zip entry with the specified name.
使用ZipEntry的构造方法可以创建一个zip压缩文件包的实例,然后通过ZipOutputStream将待压缩的文件以流的形式写进该压缩包中.具体实现代码如下:
import?java.io.BufferedInputStream;?
import?java.io.BufferedOutputStream;?
import?java.io.File;?
import?java.io.FileInputStream;?
import?java.io.FileNotFoundException;?
import?java.io.FileOutputStream;?
import?java.io.IOException;?
import?java.util.zip.ZipEntry;?
import?java.util.zip.ZipOutputStream;?
/**?
*?将文件夹下面的文件?
*?打包成zip压缩文件?
*?
*/?
public?final?class?FileToZip?{?
private?FileToZip(){}?
*?将存放在sourceFilePath目录下的源文件,打包成fileName名称的zip文件,并存放到zipFilePath路径下?
public?static?boolean?fileToZip(String?sourceFilePath,String?zipFilePath,String?fileName){?
boolean?flag?=?false;?
File?sourceFile?=?new?File(sourceFilePath);?
FileInputStream?fis?=?null;?
BufferedInputStream?bis?=?null;?
FileOutputStream?fos?=?null;?
ZipOutputStream?zos?=?null;?
if(sourceFile.exists()?==?false){?
System.out.println("待压缩的文件目录:"+sourceFilePath+"不存在.");?
}else{?
try?{?
File?zipFile?=?new?File(zipFilePath?+?"/"?+?fileName?+".zip");?
if(zipFile.exists()){?
System.out.println(zipFilePath?+?"目录下存在名字为:"?+?fileName?+".zip"?+"打包文件.");?
File[]?sourceFiles?=?sourceFile.listFiles();?
if(null?==?sourceFiles?||?sourceFiles.length1){?
System.out.println("待压缩的文件目录:"?+?sourceFilePath?+?"里面不存在文件,无需压缩.");?
fos?=?new?FileOutputStream(zipFile);?
zos?=?new?ZipOutputStream(new?BufferedOutputStream(fos));?
for(int?i=0;isourceFiles.length;i++){?
//创建ZIP实体,并添加进压缩包?
ZipEntry?zipEntry?=?new?ZipEntry(sourceFiles[i].getName());?
zos.putNextEntry(zipEntry);?
//读取待压缩的文件并写进压缩包里?
fis?=?new?FileInputStream(sourceFiles[i]);?
int?read?=?0;?
zos.write(bufs,0,read);?
}?
flag?=?true;?
}?catch?(FileNotFoundException?e)?{?
e.printStackTrace();?
throw?new?RuntimeException(e);?
}?catch?(IOException?e)?{?
}?finally{?
//关闭流?
if(null?!=?bis)?bis.close();?
if(null?!=?zos)?zos.close();?
return?flag;?
public?static?void?main(String[]?args){?
String?sourceFilePath?=?"D:\\TestFile";?
String?zipFilePath?=?"D:\\tmp";?
boolean?flag?=?FileToZip.fileToZip(sourceFilePath,?zipFilePath,?fileName);?
if(flag){?
System.out.println("文件打包成功!");?
System.out.println("文件打包失败!");?
}
用java代码压缩应用到程序了,代码一般是比较复杂的,对pdf文件的mate标签优化,这类标签包括三类,pdf文件不是网页就是个文件,何况我们可以用pdf压缩工具压缩,下面有个解决方法,楼主可以做参照.
package?com.javatest.techzero.gui;?
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.InputStream;
import?java.io.OutputStream;
import?java.util.zip.ZipEntry;
import?java.util.zip.ZipFile;
import?java.util.zip.ZipInputStream;?
public?class?ZipFileDemo?{
public?static?void?main(String?args[])?throws?Exception?{
File?file?=?new?File("d:"?+?File.separator?+?"test.zip");
File?outFile?=?null;
ZipFile?zipFile?=?new?ZipFile(file);
ZipInputStream?zipInput?=?new?ZipInputStream(new?FileInputStream(file));
ZipEntry?entry?=?null;
InputStream?input?=?null;
OutputStream?out?=?null;
while?((entry?=?zipInput.getNextEntry())?!=?null)?{
System.out.println("开始解压缩"?+?entry.getName()?+?"文件...");
outFile?=?new?File("d:"?+?File.separator?+?entry.getName());
if?(!outFile.getParentFile().exists())?{
outFile.getParentFile().mkdir();
if?(!outFile.exists())?{
outFile.createNewFile();
input?=?zipFile.getInputStream(entry);
out?=?new?FileOutputStream(outFile);
int?temp?=?0;
while?((temp?=?input.read())?!=?-1)?{
SPAN?style="WHITE-SPACE:?pre"?/SPAN//System.out.println(temp);
out.write(temp);
input.close();
out.close();
System.out.println("Done!");
仅供参考
下面的示例代码演示如何创建zip压缩包.
首先需要由需要压缩的文件创建一个InputStream对象,然后读取文件内容写入到ZipOutputStream中.
ZipOutputStream类接受FileOutputStream作为参数.创建号ZipOutputStream对象后需要创建一个zip entry,然后写入.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
*
* @author outofmemory.cn
*/
public class Main {
* Creates a zip file
public void createZipFile() {
try {
String inputFileName = "test.txt";
String zipFileName = "compressed.zip";
//Create input and output streams
FileInputStream inStream = new FileInputStream(inputFileName);
ZipOutputStream outStream = new ZipOutputStream(new FileOutputStream(zipFileName));
// Add a zip entry to the output stream
outStream.putNextEntry(new ZipEntry(inputFileName));
int bytesRead;
//Each chunk of data read from the input stream
//is written to the output stream
while ((bytesRead = inStream.read(buffer)) 0) {
outStream.write(buffer, 0, bytesRead);
//Close zip entry and file streams
outStream.closeEntry();
outStream.close();
inStream.close();
} catch (IOException ex) {
ex.printStackTrace();
* @param args the command line arguments
public static void main(String[] args) {
new Main().createZipFile();
以上就是土嘎嘎小编为大家整理的压缩包java代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!