Java文件压缩
来源:互联网 发布:php文件缓存 编辑:程序博客网 时间:2024/05/18 01:13
package com.tgod.core.utils;
/**
* Created by wanghh on 2016/12/6 0006.
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import com.tgod.album.model.TgodPhotoalbum;
import com.tgod.album.model.TgodPhotoalbumtmp;
import com.tgod.core.model.Constant;
public class ZipUtil {
private static byte[] _byte = new byte[1024];
/**
* 压缩文件或路径
*
* @param zip 压缩的目标url
* @param srcFiles 压缩的源文件list,可以为文件夹或多个文件
* @throws IOException
*
*/
public synchronized static int zipFile(String zip, List<File> srcFiles) throws IOException {
int i = 0;
System.out.println("create zip file1:"+zip);
// try {
//if (zip.endsWith(".zip") || zip.endsWith(".ZIP")) {
System.out.println("进入zip压缩循环");
File zipFile = new File(zip);
if(zipFile.exists()){
zipFile.delete();//如果压缩包存在则删除压缩包重新生成
}
if(!zipFile.getParentFile().exists()){
zipFile.getParentFile().mkdirs();
}
ZipOutputStream _zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
//_zipOut.setEncoding("GBK");
for (File _f : srcFiles) {
System.out.println("create zip file:_f"+_f);
i = handlerFile(zip, _zipOut, _f, "");
}
_zipOut.close();
System.out.println("create zip file:"+zip);
/* } else {
System.out.println("target file[" + zip + "] is not .zip type file");
}*/
// } catch (FileNotFoundException e) {
// } catch (IOException e) {
// }
return i;
}
/**
* @param zip 压缩的目标文件url
* @param zipOut 编码
* @param srcFile 被压缩的文件名称
* @param path 在zip中的相对路径
* @throws IOException
*/
public static int handlerFile(String zip, ZipOutputStream zipOut, File srcFile, String path) throws IOException {
int i = 0;
// System.out.println(" begin to compression file[" + srcFile.getName() + "]");
if (!"".equals(path) && !path.endsWith(File.separator)) {
path += File.separator;
}
if (!srcFile.getPath().equals(zip)) {
if (srcFile.isDirectory()) {
File[] _files = srcFile.listFiles();
if (_files.length == 0) {
zipOut.putNextEntry(new ZipEntry(path + srcFile.getName() + File.separator));
zipOut.closeEntry();
} else {
for (File _f : _files) {
handlerFile(zip, zipOut, _f, path + srcFile.getName());
i++;
}
}
} else {
InputStream _in = new FileInputStream(srcFile);
zipOut.putNextEntry(new ZipEntry(path + srcFile.getName()));
int len = 0;
while ((len = _in.read(_byte)) > 0) {
zipOut.write(_byte, 0, len);
}
_in.close();
zipOut.closeEntry();
}
}
return i;
}
/**
* 获得文件大小
*
* @param zip 目标文件url
*/
public static String getZipSize(String zip) {
String fileSize = "";
File f = new File(zip);
if (f.exists() && f.isFile()) {
fileSize = FormetFileSize(f.length());
} else {
System.out.println("file doesn't exist or is not a file");
}
return fileSize;
}
/**
* 转换文件大小
*
* @param size 数值
*/
public static String FormetFileSize(long size) {
DecimalFormat df = new DecimalFormat("#.00");
String fileSize = "";
/* if (size < 1024) {
fileSize = df.format((double) size) + "B";
} else if (size < 1048576) {
fileSize = df.format((double) size / 1024) + "K";
} else if (size < 1073741824) {
fileSize = df.format((double) size / 1048576) + "M";
} else {
fileSize = df.format((double) size / 1073741824) + "G";
}*/
fileSize = df.format((int) size) +"";
return fileSize;
}
/**
* 获得图集图片数量
*
* @param i 压缩方法返回值
* @param srcFiles 图集list
*/
public static int getAlbumNum(int i, List<File> srcFiles) {
int k = 0;
if (srcFiles.size() == 1) {
k = i;
} else {
k = srcFiles.size();
}
return k;
}
public static String getZipFile(TgodPhotoalbumtmp album,String albumSize) {
String file = "/home/tgod-image" + File.separator + Constant.IMAGE_SAVE_PATH + File.separator+album.getPhotographerid()+"_"+album.getModelid()+ File.separator+album.getId()+ File.separator +Constant.RAR_SAVE_PATH + File.separator + DateUtils.format(new Date(), "yyyy-MM-dd") + "-" + album.getModelname() + "-" + album.getPhotographername() + "-" + album.getId() +"-"+albumSize+".zip";
return file;
}
public static void main(String[] args) {
String zip = "D:\\home\\tgod_img\\ziptest.zip";
File f1 = new File("D:\\home\\tgod-img\\下载说明.jpg");
List<File> list = new ArrayList<File>();
list.add(f1);
//zipFile(zip, list);
System.out.println("total file size=" + getZipSize(zip));
}
}
/**
* Created by wanghh on 2016/12/6 0006.
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import com.tgod.album.model.TgodPhotoalbum;
import com.tgod.album.model.TgodPhotoalbumtmp;
import com.tgod.core.model.Constant;
public class ZipUtil {
private static byte[] _byte = new byte[1024];
/**
* 压缩文件或路径
*
* @param zip 压缩的目标url
* @param srcFiles 压缩的源文件list,可以为文件夹或多个文件
* @throws IOException
*
*/
public synchronized static int zipFile(String zip, List<File> srcFiles) throws IOException {
int i = 0;
System.out.println("create zip file1:"+zip);
// try {
//if (zip.endsWith(".zip") || zip.endsWith(".ZIP")) {
System.out.println("进入zip压缩循环");
File zipFile = new File(zip);
if(zipFile.exists()){
zipFile.delete();//如果压缩包存在则删除压缩包重新生成
}
if(!zipFile.getParentFile().exists()){
zipFile.getParentFile().mkdirs();
}
ZipOutputStream _zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
//_zipOut.setEncoding("GBK");
for (File _f : srcFiles) {
System.out.println("create zip file:_f"+_f);
i = handlerFile(zip, _zipOut, _f, "");
}
_zipOut.close();
System.out.println("create zip file:"+zip);
/* } else {
System.out.println("target file[" + zip + "] is not .zip type file");
}*/
// } catch (FileNotFoundException e) {
// } catch (IOException e) {
// }
return i;
}
/**
* @param zip 压缩的目标文件url
* @param zipOut 编码
* @param srcFile 被压缩的文件名称
* @param path 在zip中的相对路径
* @throws IOException
*/
public static int handlerFile(String zip, ZipOutputStream zipOut, File srcFile, String path) throws IOException {
int i = 0;
// System.out.println(" begin to compression file[" + srcFile.getName() + "]");
if (!"".equals(path) && !path.endsWith(File.separator)) {
path += File.separator;
}
if (!srcFile.getPath().equals(zip)) {
if (srcFile.isDirectory()) {
File[] _files = srcFile.listFiles();
if (_files.length == 0) {
zipOut.putNextEntry(new ZipEntry(path + srcFile.getName() + File.separator));
zipOut.closeEntry();
} else {
for (File _f : _files) {
handlerFile(zip, zipOut, _f, path + srcFile.getName());
i++;
}
}
} else {
InputStream _in = new FileInputStream(srcFile);
zipOut.putNextEntry(new ZipEntry(path + srcFile.getName()));
int len = 0;
while ((len = _in.read(_byte)) > 0) {
zipOut.write(_byte, 0, len);
}
_in.close();
zipOut.closeEntry();
}
}
return i;
}
/**
* 获得文件大小
*
* @param zip 目标文件url
*/
public static String getZipSize(String zip) {
String fileSize = "";
File f = new File(zip);
if (f.exists() && f.isFile()) {
fileSize = FormetFileSize(f.length());
} else {
System.out.println("file doesn't exist or is not a file");
}
return fileSize;
}
/**
* 转换文件大小
*
* @param size 数值
*/
public static String FormetFileSize(long size) {
DecimalFormat df = new DecimalFormat("#.00");
String fileSize = "";
/* if (size < 1024) {
fileSize = df.format((double) size) + "B";
} else if (size < 1048576) {
fileSize = df.format((double) size / 1024) + "K";
} else if (size < 1073741824) {
fileSize = df.format((double) size / 1048576) + "M";
} else {
fileSize = df.format((double) size / 1073741824) + "G";
}*/
fileSize = df.format((int) size) +"";
return fileSize;
}
/**
* 获得图集图片数量
*
* @param i 压缩方法返回值
* @param srcFiles 图集list
*/
public static int getAlbumNum(int i, List<File> srcFiles) {
int k = 0;
if (srcFiles.size() == 1) {
k = i;
} else {
k = srcFiles.size();
}
return k;
}
public static String getZipFile(TgodPhotoalbumtmp album,String albumSize) {
String file = "/home/tgod-image" + File.separator + Constant.IMAGE_SAVE_PATH + File.separator+album.getPhotographerid()+"_"+album.getModelid()+ File.separator+album.getId()+ File.separator +Constant.RAR_SAVE_PATH + File.separator + DateUtils.format(new Date(), "yyyy-MM-dd") + "-" + album.getModelname() + "-" + album.getPhotographername() + "-" + album.getId() +"-"+albumSize+".zip";
return file;
}
public static void main(String[] args) {
String zip = "D:\\home\\tgod_img\\ziptest.zip";
File f1 = new File("D:\\home\\tgod-img\\下载说明.jpg");
List<File> list = new ArrayList<File>();
list.add(f1);
//zipFile(zip, list);
System.out.println("total file size=" + getZipSize(zip));
}
}
阅读全文
0 0
- Java中的文件压缩
- Java压缩zip文件
- java 实现文件压缩
- java多线程文件压缩
- JAVA 压缩解压文件
- java压缩单个文件
- java 文件压缩 GZIP
- java压缩文件夹/文件
- java 压缩解压缩文件
- java文件压缩
- java文件压缩二
- java文件压缩四
- java文件读写、压缩
- Java 文件压缩
- java压缩、解压缩文件
- java压缩zip文件
- java 文件的压缩
- JAVA文件压缩、解压
- Springboot学习笔记(一)FastJson解析JSON数据
- java jxl 读取excel
- 排序算法学习体会
- 磁盘阵列RAID0,1,10,5,6
- Coursera/py4inf/python data structure 笔记 密歇根大学
- Java文件压缩
- GMapping源码分析之随手笔记
- Java9新特性——module模块系统
- 将多个txt文件导入到ORACLE
- java随机从数组中取出指定数目的值
- 车联网V2X技术要点
- SpingMVC随笔
- Day5 基于greenDao的List存储与查询方法大全
- Android签名