java web 项目 常用 小工具类 ~~~~
【摘要】 java web 项目 常用 小工具类 ~~~~
一 、DateUtil 日期工具类
package com.devframe.common.util; import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util...
java web 项目 常用 小工具类 ~~~~
一 、DateUtil 日期工具类
-
package com.devframe.common.util;
-
-
import java.text.SimpleDateFormat;
-
import java.util.ArrayList;
-
import java.util.Calendar;
-
import java.util.Date;
-
import java.util.List;
-
-
/**
-
* @author zhangkai
-
* @ClassName: DateUtil
-
* @Description: 日期工具类
-
* @date 2017年9月22日 上午8:52:33
-
*/
-
public class DateUtil {
-
/**
-
* SimpleDateFormat不是线程安全的. 在多线程并行处理的情况下, 会得到非预期的值. 这个错误非常普遍!
-
* <p>所以只给定格式,自己new<p/>
-
* "yyyy-MM-dd": 2017-09-22<br>
-
* "yyyy-MM-dd hh:mm:ss": 2017-09-22 9:27:41<br>
-
* "yyyy-MM-dd hh:mm:ss EE": 2017-09-22 9:27:41 星期五<br>
-
* "yyyy年MM月dd日 hh:mm:ss EE": 2017年09月22日 9:27:41 星期五<br>
-
*/
-
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
-
-
public static final String DATE_FORMAT1 = "yyyy-MM-dd";
-
-
public static final String DATE_FORMAT2="yyyyMMddHHmmss";
-
-
public static final String DATE_FORMAT3= "yyMMddHHmmss";
-
-
public static final String DATE_FORMAT4 = "yyyy-MM-dd 00:00:00";
-
/**
-
* 时间戳转换成日期格式字符串
-
*
-
* @param seconds 精确到秒的字符串
-
* @param format 指定格式
-
* @return String
-
*/
-
public static String timeStamp2Datestr(String seconds, String format) {
-
if (seconds == null || seconds.isEmpty() || seconds.equals("null")) {
-
return "";
-
}
-
if (format == null || format.isEmpty()) {
-
format = DATE_FORMAT;
-
}
-
SimpleDateFormat sdf = new SimpleDateFormat(format);
-
return sdf.format(new Date(Long.valueOf(seconds + "000")));
-
}
-
-
/**
-
* 日期格式字符串转换成时间戳
-
*
-
* @param date_str 字符串日期
-
* @param format format
-
* @return String
-
*/
-
public static String datestr2TimeStamp(String date_str, String format) {
-
if (format == null || format.isEmpty()) {
-
format = DATE_FORMAT;
-
}
-
try {
-
SimpleDateFormat sdf = new SimpleDateFormat(format);
-
return String.valueOf(sdf.parse(date_str).getTime() / 1000);
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
return "";
-
}
-
-
/**
-
* date 转换成时间戳字符串
-
*
-
* @param date date
-
* @return java.lang.String
-
*/
-
public static String date2TimeStamp(Date date) {
-
if (date == null) {
-
date = new Date();
-
}
-
try {
-
return String.valueOf(date.getTime());
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
return "";
-
}
-
-
/**
-
* 取得当前时间戳(精确到秒)
-
*
-
* @return String
-
*/
-
public static String timeStamp() {
-
long time = System.currentTimeMillis();
-
return String.valueOf(time / 1000);
-
}
-
-
/**
-
* date转换成string
-
*
-
* @param date date
-
* @param format formatStr
-
* @return String
-
*/
-
public static String date2String(Date date, String format) {
-
if (date == null) {
-
return null;
-
}
-
if (format == null || format.isEmpty()) {
-
format = DATE_FORMAT;
-
}
-
try {
-
SimpleDateFormat sdf = new SimpleDateFormat(format);
-
return sdf.format(date);
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
return null;
-
}
-
-
/**
-
* 时间戳转成Date
-
*
-
* @param timeStamp 时间戳字符串
-
* @return Date
-
*/
-
public static Date timeStamp2Date(String timeStamp) {
-
if (timeStamp == null || timeStamp.isEmpty()) {
-
return null;
-
}
-
try {
-
if (timeStamp.length() == 10) {
-
return new Date(Long.valueOf(timeStamp + "000"));
-
}
-
if (timeStamp.length() == 13) {
-
return new Date(Long.valueOf(timeStamp));
-
}
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
return null;
-
}
-
-
/**
-
* 时间字符串转换成Date
-
*
-
* @param dateString date字符串
-
* @param format 转换格式字符串
-
* @return Date
-
*/
-
public static Date string2Date(String dateString, String format) {
-
if (StringUtil.isNull(dateString)) {
-
return null;
-
}
-
if (StringUtil.isNull(format)) {
-
format = DATE_FORMAT;
-
}
-
try {
-
SimpleDateFormat sdf = new SimpleDateFormat(format);
-
return sdf.parse(dateString);
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
return null;
-
}
-
-
/**
-
* 返回当前时间精确到秒的时间戳
-
*
-
* @return Long
-
*/
-
public static Long getSecondTimestamp() {
-
return getSecondTimestamp(null);
-
}
-
-
/**
-
* 获取精确到秒的时间戳,默认返回当前时间
-
*
-
* @return Long
-
*/
-
public static Long getSecondTimestamp(Date date) {
-
if (null == date) {
-
date = new Date();
-
}
-
String timestamp = String.valueOf(date.getTime());
-
int length = timestamp.length();
-
if (length > 3) {
-
return Long.valueOf(timestamp.substring(0, length - 3));
-
} else {
-
return 0L;
-
}
-
}
-
-
/**
-
* 返回传入时间与当前时间间隔秒数
-
*
-
* @param date date
-
* @return long
-
*/
-
public static long getTimeDelta(Date date) {
-
return getTimeDelta(new Date(), date);
-
}
-
-
/**
-
* 返回指定时间间隔秒数
-
*
-
* @param date1 date1
-
* @param date2 date2
-
* @return long
-
*/
-
public static long getTimeDelta(Date date1, Date date2) {
-
if (date1 == null) {
-
throw new NullPointerException();
-
}
-
if (date2 == null) {
-
return 0L;
-
}
-
return Math.abs(date1.getTime() - date2.getTime()) / 1000;
-
}
-
-
public static double getTimeDeltaByHour(Date date) {
-
if (date == null) {
-
throw new NullPointerException("date required not null");
-
}
-
return Math.abs(System.currentTimeMillis() - date.getTime()) / (1000 * 3600);
-
}
-
-
-
/**
-
* 获取当前日期实在周的星期一和星期日的日期
-
* @param args
-
*/
-
public static List<String > getTimeInterval() {
-
Calendar cal = Calendar.getInstance();
-
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
-
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
-
cal.setFirstDayOfWeek(Calendar.MONDAY);
-
// 获得当前日期是一个星期的第几天
-
int day = cal.get(Calendar.DAY_OF_WEEK);
-
// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
-
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
-
//星期一
-
String imptimeBegin = sdf.format(cal.getTime());
-
cal.add(Calendar.DATE, 6);
-
//星期日
-
String imptimeEnd = sdf.format(cal.getTime());
-
List<String> list = new ArrayList<String>();
-
list.add(imptimeBegin);
-
list.add(imptimeEnd);
-
return list;
-
-
}
-
-
/*
-
* 计算某一天所在周的星期一和星期天的日期
-
*/
-
public static String[] convertWeekByDate(String s) throws Exception {
-
String result[] = new String[2];
-
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式
-
Date time = sdf.parse(s);
-
Calendar cal = Calendar.getInstance();
-
cal.setTime(time);
-
// 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
-
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
-
if (1 == dayWeek) {
-
cal.add(Calendar.DAY_OF_MONTH, -1);
-
}
-
cal.setFirstDayOfWeek(Calendar.MONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
-
-
int day = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
-
-
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
-
-
String imptimeBegin = sdf.format(cal.getTime()); //所在周的星期一
-
-
result[0] = imptimeBegin;
-
-
cal.add(Calendar.DATE, 6);
-
-
String imptimeEnd = sdf.format(cal.getTime()); //所在周的星期日
-
-
result[1] = imptimeEnd;
-
return result;
-
-
}
-
-
public static void main(String[] args) {
-
System.out.println(DateUtil.getSecondTimestamp());
-
System.out.println(DateUtil.getTimeDelta(new Date()));
-
}
-
}
二 、JaxbUtil Java 对象和 xml 互转工具类
-
package com.devframe.common.util;
-
-
import java.io.StringReader;
-
import java.io.StringWriter;
-
-
import javax.xml.bind.JAXBContext;
-
import javax.xml.bind.Marshaller;
-
import javax.xml.bind.Unmarshaller;
-
-
/**
-
* @ClassName:
-
* @Description:
-
* @author DuanZhaoXu
-
* @date 2018年8月23日上午8:58:52
-
*/
-
public class JaxbXmlUtil {
-
/**
-
* JavaBean转换成xml
-
* * 默认编码UTF-8
-
*
-
* @param obj
-
* @return
-
*/
-
public static String convertToXml(Object obj) {
-
return convertToXml(obj, "UTF-8");
-
}
-
-
/**
-
* JavaBean转换成xml
-
* @param obj
-
* @param encoding
-
* @return
-
*/
-
public static String convertToXml(Object obj, String encoding) {
-
String result = null;
-
try {
-
JAXBContext context = JAXBContext.newInstance(obj.getClass());
-
Marshaller marshaller = context.createMarshaller();
-
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
-
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
-
StringWriter writer = new StringWriter();
-
marshaller.marshal(obj, writer);
-
result = writer.toString();
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
-
return result;
-
}
-
-
/**
-
* xml转换成JavaBean
-
* @param xml
-
* @param c
-
* @return
-
*/
-
@SuppressWarnings("unchecked")
-
public static <T> T converyToJavaBean(String xml, Class<T> c) {
-
T t = null;
-
try {
-
JAXBContext context = JAXBContext.newInstance(c);
-
Unmarshaller unmarshaller = context.createUnmarshaller();
-
t = (T) unmarshaller.unmarshal(new StringReader(xml));
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
-
return t;
-
}
-
}
三 、MapRemoveNullUtil 移除map中空key或者value空值 的工具类
-
package com.devframe.common.util;
-
-
import java.util.ArrayList;
-
import java.util.Collection;
-
import java.util.HashMap;
-
import java.util.Iterator;
-
import java.util.Map;
-
import java.util.Set;
-
-
public class MapRemoveNullUtil {
-
-
/**
-
* 移除map中空key或者value空值
-
*
-
* @param map
-
*/
-
public static void removeNullEntry(Map map) {
-
removeNullKey(map);
-
removeNullValue(map);
-
}
-
-
/**
-
* 移除map的空key
-
*
-
* @param map
-
* @return
-
*/
-
public static void removeNullKey(Map map) {
-
Set set = map.keySet();
-
for (Iterator iterator = set.iterator(); iterator.hasNext();) {
-
Object obj = (Object) iterator.next();
-
remove(obj, iterator);
-
}
-
}
-
-
/**
-
* 移除map中的value空值
-
*
-
* @param map
-
* @return
-
*/
-
public static void removeNullValue(Map map) {
-
Set set = map.keySet();
-
for (Iterator iterator = set.iterator(); iterator.hasNext();) {
-
Object obj = (Object) iterator.next();
-
Object value = (Object) map.get(obj);
-
remove(value, iterator);
-
}
-
}
-
-
/**
-
* Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁。 Iterator
-
* 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变,
-
* 所以当索引指针往后移动的时候就找不到要迭代的对象,所以按照 fail-fast 原则 Iterator 会马上抛出
-
* java.util.ConcurrentModificationException 异常。 所以 Iterator
-
* 在工作的时候是不允许被迭代的对象被改变的。 但你可以使用 Iterator 本身的方法 remove() 来删除对象,
-
* Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性。
-
*
-
* @param obj
-
* @param iterator
-
*/
-
private static void remove(Object obj, Iterator iterator) {
-
if (obj instanceof String) {
-
String str = (String) obj;
-
if (StringUtil.isNull(str)) {
-
iterator.remove();
-
}
-
} else if (obj instanceof Collection) {
-
Collection col = (Collection) obj;
-
if (col == null || col.isEmpty()) {
-
iterator.remove();
-
}
-
-
} else if (obj instanceof Map) {
-
Map temp = (Map) obj;
-
if (temp == null || temp.isEmpty()) {
-
iterator.remove();
-
}
-
-
} else if (obj instanceof Object[]) {
-
Object[] array = (Object[]) obj;
-
if (array == null || array.length <= 0) {
-
iterator.remove();
-
}
-
} else {
-
if (obj == null) {
-
iterator.remove();
-
}
-
}
-
}
-
-
public static void main(String[] args) {
-
Map map = new HashMap();
-
map.put(1, "第一个值是数字");
-
map.put("2", "第2个值是字符串");
-
map.put(new String[] { "1", "2" }, "第3个值是数组");
-
map.put(new ArrayList(), "第4个值是List");
-
map.put(new HashMap(), "Map 无值");
-
map.put("5", "第5个");
-
map.put("6", null);
-
map.put("asd", "asdasd");
-
map.put("7", "");
-
map.put("8", " ");
-
System.out.println(map);
-
MapRemoveNullUtil.removeNullKey(map);
-
System.out.println();
-
System.out.println(map);
-
MapRemoveNullUtil.removeNullValue(map);
-
System.out.println();
-
System.out.println(map);
-
}
-
}
四、MD5Util md5 加密工具类
-
package com.devframe.common.util;
-
-
import java.security.MessageDigest;
-
import java.security.NoSuchAlgorithmException;
-
-
/**
-
* @ClassName: MD5Util
-
* @Description: MD5加密工具类
-
* @author DuanZhaoXu
-
* @date 2018年3月13日 上午9::15:25
-
*
-
*/
-
public class MD5Util {
-
private MD5Util() {
-
-
}
-
-
public static String getEncryption(String originString) {
-
String result = "";
-
try {
-
if (originString != null) {
-
try {
-
// 指定加密的方式为MD5
-
MessageDigest md = MessageDigest.getInstance("MD5");
-
// 进行加密运算
-
byte bytes[] = md.digest(originString.getBytes("ISO8859-1"));
-
for (int i = 0; i < bytes.length; i++) {
-
// 将整数转换成十六进制形式的字符串 这里与0xff进行与运算的原因是保证转换结果为32位
-
String str = Integer.toHexString(bytes[i] & 0xFF);
-
if (str.length() == 1) {
-
str += "F";
-
}
-
result += str;
-
}
-
} catch (NoSuchAlgorithmException e) {
-
e.printStackTrace();
-
}
-
}
-
} catch (Exception e) {
-
Log.error(e);
-
}
-
return result;
-
}
-
-
public static void main(String[] args) {
-
String aa = MD5Util.getEncryption("12345");
-
System.out.println(aa);
-
}
-
}
五 、Properties 工具类
-
package com.devframe.common.util;
-
-
import java.io.FileInputStream;
-
import java.io.IOException;
-
import java.io.InputStreamReader;
-
import java.net.URL;
-
import java.util.Properties;
-
-
public class PropertyUtil {
-
private static final Properties PROP = new Properties();
-
/**
-
* 设置配置文件的路径
-
*/
-
private static final String PATH = "/config.properties";
-
-
/**
-
* 读取配置文件的内容(key,value)
-
*
-
* @param key key
-
* @return key对应的value
-
*/
-
public static String get(String key) {
-
if (PROP.isEmpty()) {
-
FileInputStream in = null;
-
InputStreamReader reader = null;
-
try {
-
URL url = PropertyUtil.class.getResource(PATH);
-
in = new FileInputStream(url.getPath());
-
reader = new InputStreamReader(in, "utf-8");
-
PROP.load(reader);
-
} catch (IOException e) {
-
Log.error(e);
-
} finally {
-
if (reader != null) {
-
try {
-
reader.close();
-
in.close();
-
} catch (IOException e) {
-
Log.error(e);
-
}
-
}
-
}
-
}
-
return PROP.getProperty(key);
-
}
-
}
六 、WinRarUtil 调用WinRAR.exe 解压rar文件工具类
-
package com.devframe.common.util;
-
-
import java.io.File;
-
-
/**
-
* 调用WinRAR.exe 解压rar文件
-
* @ClassName: WinRarUtil
-
* @Description: WinRarUtil
-
* @author DuanZhaoXu
-
* @date 2018年9月15日下午7:21:19
-
*/
-
public class WinRarUtil {
-
-
//服务器需要安装winrar
-
public static final String winrarPath = "C://Program Files//WinRAR//WinRAR.exe";
-
public static boolean unrar(String rarFile, String target) {
-
boolean bool = false;
-
File f=new File(rarFile);
-
if(!f.exists()){
-
return false;
-
}
-
String cmd = winrarPath + " X " + f.getPath() + " "+target;
-
try {
-
Process proc = Runtime.getRuntime().exec(cmd);
-
if (proc.waitFor() != 0) {
-
if (proc.exitValue() == 0) {
-
bool = false;
-
}
-
} else {
-
bool = true;
-
}
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
return bool;
-
-
}
-
-
public static void main(String[] args) {
-
WinRarUtil.unrar("C:\\resultdata\\save\\devallinone.rar","C:\\resultdata\\save");
-
}
-
}
七、 zip4jUtil 解压压缩 zip 文件工具类
-
package com.devframe.common.util;
-
-
import java.io.File;
-
import java.util.ArrayList;
-
import java.util.Date;
-
import java.util.HashMap;
-
import java.util.List;
-
import java.util.Map;
-
-
import org.apache.commons.io.FileUtils;
-
import org.apache.commons.lang3.StringUtils;
-
-
import com.devframe.common.exception.DevFrameException;
-
-
import net.lingala.zip4j.core.ZipFile;
-
import net.lingala.zip4j.exception.ZipException;
-
import net.lingala.zip4j.model.ZipParameters;
-
import net.lingala.zip4j.util.Zip4jConstants;
-
-
/**
-
* Created by wzj on 2017/11/27.
-
*/
-
public class Zip4jUtil {
-
public static void main(String[] args) {
-
try {
-
// zip("F:\\测试1", "F:\\测试1.zip", null);
-
// long time = System.currentTimeMillis();
-
// unZip("D:\\globalPathPlanning_v1.11_java.zip","D:\\globalPathPlanning_v1.11_java",null);
-
// long time2 = System.currentTimeMillis();
-
// System.out.println(time2 - time);
-
// ZipFile zipFile = new ZipFile("F:\\HEB_Test1.zip");
-
List<Map<String, Object>> result = getZipTiffFiles("C:\\resultdata\\save\\test2.zip", "C:\\resultdata\\save\\", "txt");
-
for (Map<String, Object> map : result) {
-
System.out.println("文件名称:" + map.get("fileName") + "<>" + "上传时间:" + map.get("uploadTime"));
-
}
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
}
-
-
/**
-
* 解压并获取 zip 文件里面的文件 名称 路径 和 上传时间
-
*
-
* @param srcFile
-
* @return List<Map<String, Object>>
-
* @throws ZipException
-
*/
-
public static List<Map<String, Object>> getZipTiffFiles(String srcFile, String dest, String type)
-
throws ZipException {
-
File file = new File(srcFile);
-
if (!file.exists()) {
-
throw new DevFrameException("文件不存在");
-
}
-
// 文件名称带有.zip后缀
-
String fileName = file.getName();
-
// 文件名称不带zip后缀
-
String fileNameNoZip = fileName.substring(0, file.getName().lastIndexOf("."));
-
// 解压
-
unZip(srcFile, dest);
-
// 解压之后的文件夹
-
File file2 = new File(dest + fileNameNoZip);
-
String uploadTime = DateUtil.date2String(new Date(), DateUtil.DATE_FORMAT);
-
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
-
if(file2!=null) {
-
result = recursionGetTifFiles(result, type, uploadTime, file2);
-
}
-
FileUtils.deleteQuietly(file);
-
return result;
-
}
-
-
public static List<Map<String, Object>> recursionGetTifFiles(List<Map<String, Object>> result, String type,
-
String uploadTime, File file) {
-
File[] subFiles = file.listFiles();
-
if (subFiles != null && subFiles.length > 0) {
-
for (File subFile : subFiles) {
-
String fileName = subFile.getName();
-
String filePath = subFile.getPath();
-
if (subFile.isFile()) {
-
if (StringUtils.isBlank(type)) {
-
result = add(result, fileName, filePath, uploadTime);
-
} else {
-
if (fileName.endsWith("." + type)) {
-
result = add(result, fileName, filePath, uploadTime);
-
}
-
}
-
} else if (subFile.isDirectory()) {
-
result = recursionGetTifFiles(result, type, uploadTime, subFile);
-
}
-
}
-
}
-
return result;
-
}
-
-
public static List<Map<String, Object>> add(List<Map<String, Object>> result, String fileName, String filePath,
-
String uploadTime) {
-
Map<String, Object> map = new HashMap<String, Object>();
-
map.put("name", fileName);
-
map.put("path", filePath);
-
map.put("updateTime", uploadTime);
-
result.add(map);
-
return result;
-
}
-
-
/**
-
* 压缩(无需密码)
-
*
-
* @param srcFile
-
* @param dest
-
* @throws ZipException
-
*/
-
public static void zip(String srcFile, String dest) throws ZipException {
-
zip(srcFile, dest, null);
-
}
-
-
/**
-
* 压缩
-
*
-
* @param srcFile 源目录
-
* @param dest 要压缩的目录
-
* @param passwd 密码 不是必填
-
* @throws ZipException 异常
-
*/
-
public static void zip(String srcFile, String dest, String passwd) throws ZipException {
-
File srcfile = new File(srcFile);
-
-
// 创建目标文件
-
String destname = buildDestFileName(srcfile, dest);
-
ZipParameters par = new ZipParameters();
-
-
// 压缩级别
-
// static final int COMP_STORE = 0;(仅打包,不压缩) (对应好压的存储)
-
// static final int COMP_DEFLATE = 8;(默认) (对应好压的标准)
-
// static final int COMP_AES_ENC = 99;
-
par.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
-
-
// 压缩等级
-
// static final int DEFLATE_LEVEL_FASTEST = 1;
-
// static final int DEFLATE_LEVEL_FAST = 3;
-
// static final int DEFLATE_LEVEL_NORMAL = 5;
-
// static final int DEFLATE_LEVEL_MAXIMUM = 7;
-
// static final int DEFLATE_LEVEL_ULTRA = 9;
-
par.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
-
-
if (passwd != null) {
-
par.setEncryptFiles(true);
-
// 设置加密方式为0, 默认 为-1,没有加密方式会报错
-
par.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);
-
par.setPassword(passwd.toCharArray());
-
}
-
-
ZipFile zipfile = new ZipFile(destname);
-
if (srcfile.isDirectory()) {
-
zipfile.addFolder(srcfile, par);
-
} else {
-
zipfile.addFile(srcfile, par);
-
}
-
}
-
-
/**
-
* @param zipFile
-
* @param dest
-
* @throws ZipException
-
*/
-
public static void unZip(String zipFile, String dest) throws ZipException {
-
unZip(zipFile, dest, null);
-
}
-
-
/**
-
* 解压
-
*
-
* @param zipfile 压缩包文件
-
* @param dest 目标文件
-
* @param passwd 密码
-
* @throws ZipException 抛出异常
-
*/
-
public static void unZip(String zipfile, String dest, String passwd) throws ZipException {
-
ZipFile zfile = new ZipFile(zipfile);
-
zfile.setFileNameCharset("GBK");// 在GBK系统中需要设置utf-8,windows系统设置GBK
-
if (!zfile.isValidZipFile()) {
-
throw new ZipException("压缩文件不合法,可能已经损坏!");
-
}
-
-
// File file = new File(dest);
-
// if (file.isDirectory() && !file.exists())
-
// {
-
// file.mkdirs();
-
// }
-
-
if (zfile.isEncrypted()) {
-
zfile.setPassword(passwd.toCharArray());
-
}
-
zfile.extractAll(dest);
-
-
}
-
-
public static String buildDestFileName(File srcfile, String dest) {
-
if (dest == null) {
-
if (srcfile.isDirectory()) {
-
dest = srcfile.getParent() + File.separator + srcfile.getName() + ".zip";
-
} else {
-
String filename = srcfile.getName().substring(0, srcfile.getName().lastIndexOf("."));
-
dest = srcfile.getParent() + File.separator + filename + ".zip";
-
}
-
} else {
-
createPath(dest);// 路径的创建
-
if (dest.endsWith(File.separator)) {
-
String filename = "";
-
if (srcfile.isDirectory()) {
-
filename = srcfile.getName();
-
} else {
-
filename = srcfile.getName().substring(0, srcfile.getName().lastIndexOf("."));
-
}
-
dest += filename + ".zip";
-
}
-
}
-
return dest;
-
}
-
-
private static void createPath(String dest) {
-
File destDir = null;
-
if (dest.endsWith(File.separator)) {
-
destDir = new File(dest);// 给出的是路径时
-
} else {
-
destDir = new File(dest.substring(0, dest.lastIndexOf(File.separator)));
-
}
-
-
if (!destDir.exists()) {
-
destDir.mkdirs();
-
}
-
}
-
-
}
文章来源: blog.csdn.net,作者:血煞风雨城2018,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_31905135/article/details/83343038
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)