https://blog.youkuaiyun.com/kerenseaman/article/details/64905368
http://aniyo.iteye.com/blog/1495435
===========os.name:Windows 7
===========file.separator:\
===========os.name:Linux
===========file.separator:/
public String fileToZip(String sourceFilePath, String zipFilePath, String zipName) throws Exception{
File sourceFile = new File(sourceFilePath);
FileInputStream fis = null;
BufferedInputStream bis = null;
FileOutputStream fos = null;
ZipOutputStream zos = null;
File zipDir = new File(zipFilePath);
//判断文件路径是否存在不存在新建
if(!zipDir.exists()) zipDir.mkdirs();
String allFilePath = zipFilePath + zipName + ".zip";
File zipFile = new File(allFilePath);
//判断zip是否存在,存在删除
if(zipFile.exists()) {
zipFile.delete();
}
File[] sourceFiles = sourceFile.listFiles();
if(null == sourceFiles || sourceFiles.length < 1) {
}else {
/**
* 获取服务器名称、服务器的文件目录
* linux系统
* os.name:Linux
* file.separator:/
* windows系统
* os.name:Windows 7
* file.separator:\
*/
String serverName = System.getProperty("os.name");
String serverSeparator = System.getProperty("file.separator");
fos = new FileOutputStream(zipFile);
zos = new ZipOutputStream(new BufferedOutputStream(fos));
if("Linux".equals(serverName) || "/".equals(serverSeparator)){
zos.setEncoding(System.getProperty("sun.jnu.encoding"));//解决linux中文乱码
}
byte[] bufs = new byte[1024 * 10];
for (int i = 0; i < sourceFiles.length; i++) {
ZipEntry entry = new ZipEntry(sourceFiles[i].getName());
if("Linux".equals(serverName) || "/".equals(serverSeparator)){
entry.setUnixMode(644);//解决linux中文乱码
}
zos.putNextEntry(entry);
fis = new FileInputStream(sourceFiles[i]);
bis = new BufferedInputStream(fis, 1024 * 10);
int read = 0;
while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {
zos.write(bufs, 0, read);
}
bis.close();
fis.close();
}
}
if(null != zos) zos.close();
if (null != fos) fos.close();
return allFilePath;
}