Java开发常用Util工具类
Posted wdzhz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java开发常用Util工具类相关的知识,希望对你有一定的参考价值。
MyStringUtil、MyCastUtil、MyCollectionUtil、MyArrayUtil、MyPropsUtil
一、字符串工具类MyStringUtil
java内部提供了一个实用工具类-------> StringUtils 不做详细表述
这里MyStringUtil
/**
* StringUtil
* @description: 字符串工具类
**/
public class MyStringUtil {
/**
* 判断是否为空字符串最优代码
* @param str
* @return 如果为空,则返回true
*/
public static boolean isEmpty(String str){
return str == null || str.trim().length() == 0;
}
/**
* 判断字符串是否非空
* @param str 如果不为空,则返回true
* @return
*/
public static boolean isNotEmpty(String str){
return !isEmpty(str);
}
}
二、数据类型转换类MyCastUtil
MyCastUtil
/**
* MyCastUtil
* @description: 数据转型工具类
**/
public class MyCastUtil{
/**
* @Description: 转为String类型
* @Param: [obj]
* @return: java.lang.String 如果参数为null则转为空字符串
*/
public static String castString(Object obj){
return MyCastUtil.castString(obj,"");
}
/**
* @Description: 转为String类型(提供默认值)
* @Param: [obj, defaultValue] 将obj转为string,如果obj为null则返回default
* @return: String
*/
public static String castString(Object obj,String defaultValue){
return obj!=null?String.valueOf(obj):defaultValue;
}
/**
* @Description: 转为double类型,如果为null或者空字符串或者格式不对则返回0
* @Param: [obj]
* @return: String
*/
public static double castDouble(Object obj){
return MyCastUtil.castDouble(obj,0);
}
/**
* @Description: 转为double类型 ,如果obj为null或者空字符串或者格式不对则返回defaultValue
* @Param: [obj, defaultValue]
* @return: String obj为null或者空字符串或者格式不对返回defaultValue
*/
public static double castDouble(Object obj,double defaultValue){
double value = defaultValue; //声明结果,把默认值赋给结果
if (obj!=null){ //判断是否为null
String strValue = castString(obj); //转换为String
if (StringUtil.isNotEmpty(strValue)){ //判断字符串是否为空(是否为空只能判断字符串,不能判断Object)
try{
value = Double.parseDouble(strValue); //不为空则把值赋给value
}catch (NumberFormatException e){
value = defaultValue; //格式不对把默认值赋给value
}
}
}
return value;
}
/**
* 转为long型,如果obj为null或者空字符串或者格式不对则返回0
* @param obj
* @return
*/
public static long castLong(Object obj){
return MyCastUtil.castLong(obj,0);
}
/**
* 转为long型(提供默认数值),如果obj为null或者空字符串或者格式不对则返回defaultValue
* @param obj
* @param defaultValue
* @return obj为null或者空字符串或者格式不对返回defaultValue
*/
public static long castLong(Object obj,long defaultValue){
long value = defaultValue; //声明结果,把默认值赋给结果
if (obj!=null){ //判断是否为null
String strValue = castString(obj); //转换为String
if (StringUtil.isNotEmpty(strValue)){ //判断字符串是否为空(是否为空只能判断字符串,不能判断Object)
try{
value = Long.parseLong(strValue); //不为空则把值赋给value
}catch (NumberFormatException e){
value = defaultValue; //格式不对把默认值赋给value
}
}
}
return value;
}
/**
* 转为int型
* @param obj
* @return 如果obj为null或者空字符串或者格式不对则返回0
*/
public static int castInt(Object obj){
return MyCastUtil.castInt(obj,0);
}
/**
* 转为int型(提供默认值)
* @param obj
* @param defaultValue
* @return 如果obj为null或者空字符串或者格式不对则返回defaultValue
*/
public static int castInt(Object obj,int defaultValue){
int value = defaultValue; //声明结果,把默认值赋给结果
if (obj!=null){ //判断是否为null
String strValue = castString(obj); //转换为String
if (StringUtil.isNotEmpty(strValue)){ //判断字符串是否为空(是否为空只能判断字符串,不能判断Object)
try{
value = Integer.parseInt(strValue); //不为空则把值赋给value
}catch (NumberFormatException e){
value = defaultValue; //格式不对把默认值赋给value
}
}
}
return value;
}
/**
* 转为boolean型,不是true的返回为false
* @param obj
* @return
*/
public static boolean castBoolean(Object obj){
return MyCastUtil.castBoolean(obj,false);
}
/**
* 转为boolean型(提供默认值)
* @param obj
* @param defaultValue
* @return
*/
public static boolean castBoolean(Object obj,boolean defaultValue){
boolean value = defaultValue;
if (obj!=null){ //为null则返回默认值
value = Boolean.parseBoolean(castString(obj)); //底层会把字符串和true对比,所以不用判断是否为空字符串
}
return value;
}
}
三、集合工具类MyCollectionUtil
MyCollectionUtil
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import java.util.Collection;
import java.util.Map;
/**
* CollectionUtil
* @description: 集合工具类
**/
public class MyCollectionUtil {
/**
* 判断collection是否为空
* @param collection
* @return
*/
public static boolean isEmpty(Collection<?> collection){
//return CollectionUtils.isEmpty(collection);
return collection == null || collection.isEmpty();
}
/**
* 判断Collection是否非空
* @return
*/
public static boolean isNotEmpty(Collection<?> collection){
return !isEmpty(collection);
}
/**
* 判断map是否为空
* @param map
* @return
*/
public static boolean isEmpty(Map<?,?> map){
//return MapUtils.isEmpty(map);
return map == null || map.isEmpty();
}
/**
* 判断map是否非
* @param map
* @return
*/
public static boolean isNotEmpty(Map<?,?> map){
return !isEmpty(map);
}
}
四、数组工具类MyArrayUtil
MyArrayUtil
/**
* 数组工具类
*/
public class MyArrayUtil{
/**
* 判断数组是否为空
* @param array
* @return
*/
public static boolean isNotEmpty(Object[] array){
return !isEmpty(array);
}
/**
* 判断数组是否非空
* @param array
* @return
*/
public static boolean isEmpty(Object[] array){
return array==null||array.length==0;
}
}
五、Properties文件操作类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* 属性文件工具类
*/
public class PropsUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(PropsUtil.class);
/**
* 加载属性文件
* @param fileName fileName一定要在class下面及java根目录或者resource跟目录下
* @return
*/
public static Properties loadProps(String fileName){
Properties props = new Properties();
InputStream is = null;
try {
//将资源文件加载为流
is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
props.load(is);
if(is==null){
throw new FileNotFoundException(fileName+"file is not Found");
}
} catch (FileNotFoundException e) {
LOGGER.error("load properties file filure",e);
}finally {
if(is !=null){
try {
is.close();
} catch (IOException e) {
LOGGER.error("close input stream failure",e);
}
}
}
return props;
}
/**
* 获取字符型属性(默认值为空字符串)
* @param props
* @param key
* @return
*/
public static String getString(Properties props,String key){
return getString(props,key,"");
}
/**
* 获取字符型属性(可制定默认值)
* @param props
* @param key
* @param defaultValue 当文件中无此key对应的则返回defaultValue
* @return
*/
public static String getString(Properties props,String key,String defaultValue){
String value = defaultValue;
if (props.containsKey(key)){
value = props.getProperty(key);
}
return value;
}
/**
* 获取数值型属性(默认值为0)
* @param props
* @param key
* @return
*/
public static int getInt(Properties props,String key){
return getInt(props,key,0);
}
/**
* 获取数值型属性(可指定默认值)
* @param props
* @param key
* @param defaultValue
* @return
*/
public static int getInt(Properties props,String key,int defaultValue){
int value = defaultValue;
if (props.containsKey(key)){
value = CastUtil.castInt(props.getProperty(key));
}
return value;
}
/**
* 获取布尔型属性(默认值为false)
* @param props
* @param key
* @return
*/
public static boolean getBoolean(Properties props,String key){
return getBoolean(props,key,false);
}
/**
* 获取布尔型属性(可指定默认值)
* @param props
* @param key
* @param defaultValue
* @return
*/
public static boolean getBoolean(Properties props,String key,Boolean defaultValue){
boolean value = defaultValue;
if (props.containsKey(key)){
value = CastUtil.castBoolean(props.getProperty(key));
}
return value;
}
}
<!--slf4j 用到的maven坐标--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.9</version> </dependency>
六、常用流操作工具类
public class StreamUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(StreamUtil.class);
/**
* 从输入流中获取字符串
* @param is
* @return
*/
public static String getString(InputStream is){
StringBuilder sb = new StringBuilder();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while((line=reader.readLine())!=null){
sb.append(line);
}
} catch (IOException e) {
LOGGER.error("get string failure",e);
throw new RuntimeException(e);
}
return sb.toString();
}
}
七、编码工具类
public class CodecUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(CodecUtil.class);
/**
* 将URL编码
*/
public static String encodeURL(String source){
String target;
try {
target = URLEncoder.encode(source,"utf-8");
} catch (UnsupportedEncodingException e) {
LOGGER.error("encode url failure",e);
throw new RuntimeException(e);
//e.printStackTrace();
}
return target;
}
/**
* 将URL解码
*/
public static String dencodeURL(String source){
String target;
try {
target = URLDecoder.decode(source,"utf-8");
} catch (UnsupportedEncodingException e) {
LOGGER.error("encode url failure",e);
throw new RuntimeException(e);
//e.printStackTrace();
}
return target;
}
}
八、下载文件工具类
/**
* 下载url的文件到指定文件路径里面,如果文件父文件夹不存在则自动创建
* url 下载的http地址
* path 文件存储地址
* return 如果文件大小大于2k则返回true
*/
public static boolean downloadCreateDir(String url,String path){
HttpURLConnection connection=null;
InputStream in = null;
FileOutputStream o=null;
try{
URL httpUrl=new URL(url);
connection = (HttpURLConnection) httpUrl.openConnection();
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("Charset", "gbk");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.setRequestMethod("GET");
byte[] data=new byte[1024];
File f=new File(path);
File parentDir = f.getParentFile();
if (!parentDir.exists()) {
parentDir.mkdirs();
}
if(connection.getResponseCode() == 200){
in = connection.getInputStream();
o=new FileOutputStream(path);
int n=0;
while((n=in.read(data))>0){
o.write(data, 0, n);
o.flush();
}
}
if(f.length()>2048){ //代表文件大小
return true; //如果文件大于2k则返回true
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
try{
if(in != null){
in.close();
}
}catch(IOException ex){
ex.printStackTrace();
}
try{o.close();}catch(Exception ex){}
try{connection.disconnect();}catch(Exception ex){}
}
return false;
}
九、文件编码转码
将GBK编码的文件转为UTF-8编码的文件
经常配合上一个使用,下载的压缩包解压为文件然后解码。
/**
* 把GBK文件转为UTF-8
* 两个参数值可以为同一个路径
* @param srcFileName 源文件
* @param destFileName 目标文件
* @throws IOException
*/
private static void transferFile(String srcFileName, String destFileName) throws IOException {
String line_separator = System.getProperty("line.separator");
FileInputStream fis = new FileInputStream(srcFileName);
StringBuffer content = new StringBuffer();
DataInputStream in = new DataInputStream(fis);
BufferedReader d = new BufferedReader(new InputStreamReader(in, "GBK")); //源文件的编码方式
String line = null;
while ((line = d.readLine()) != null)
content.append(line + line_separator);
d.close();
in.close();
fis.close();
Writer ow = new OutputStreamWriter(new FileOutputStream(destFileName), "utf-8"); //需要转换的编码方式
ow.write(content.toString());
ow.close();
}
参考 :https://www.cnblogs.com/aeolian/p/9484247.html
以上是关于Java开发常用Util工具类的主要内容,如果未能解决你的问题,请参考以下文章