大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Java常用工具類整理

Java常用工具類整理

更新時(shí)間:2021-11-23 10:30:43 來源:動(dòng)力節(jié)點(diǎn) 瀏覽787次

字符數(shù)組轉(zhuǎn)String

package com.sunsheen.hcc.fabric.utils;
/**
 * 字符數(shù)組工具
 * @author WangSong
 *
 */
public class ByteArryUtil {
    /**
      * 字節(jié)數(shù)組轉(zhuǎn)成16進(jìn)制表示格式的字符串
      * 
      * @param byteArray
      *            需要轉(zhuǎn)換的字節(jié)數(shù)組
      * @return 16進(jìn)制表示格式的字符串
      **/
     public static String toHexString(byte[] byteArray) {
         if (byteArray == null || byteArray.length < 1)
             throw new IllegalArgumentException("this byteArray must not be null or empty");     
         final StringBuilder hexString = new StringBuilder();
         for (int i = 0; i < byteArray.length; i++) {
             if ((byteArray[i] & 0xff) < 0x10)//0~F前面不零
                 hexString.append("0");
             hexString.append(Integer.toHexString(0xFF & byteArray[i]));
         }
         return hexString.toString().toLowerCase();
     }    
}

json、map、list、String格式數(shù)據(jù)互轉(zhuǎn)

package com.sunsheen.hcc.fabric.utils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections.map.ListOrderedMap;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.CycleDetectionStrategy;
/**
 * json工具
 * @author WangSong
 *
 */
public class JsonParseUtil {
    /**
     * 將jsonArry字符串轉(zhuǎn)換成map(里面可能是多個(gè)對(duì)象的情況)
     * @param json
     * @return
     */
    public static List<Map<String, Object>> parseJSON2List(String json) {
        JSONArray jsonArr = JSONArray.fromObject(json);
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        Iterator<JSONObject> it = jsonArr.iterator();
        while (it.hasNext()) {
            JSONObject json2 = it.next();
            list.add(parseJSON2Map(json2.toString()));
        }
        return list;
    }
    private static Map<String, Object> parseJSON2Map(String jsonStr) {
        ListOrderedMap map = new ListOrderedMap();
        // 最外層解析
        JSONObject json = JSONObject.fromObject(jsonStr);
        for (Object k : json.keySet()) {
            Object v = json.get(k);
            // 如果內(nèi)層還是數(shù)組的話,繼續(xù)解析
            if (v instanceof JSONArray) {
                List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
                Iterator<JSONObject> it = ((JSONArray) v).iterator();
                while (it.hasNext()) {
                    JSONObject json2 = it.next();
                    list.add(parseJSON2Map(json2.toString()));
                }
                map.put(k.toString(), list);
            } else {
                map.put(k.toString(), v);
            }
        }
        Iterator iterator = map.keySet().iterator();
        List<String> lsList = new ArrayList<String>();
        int d=0;
        while (iterator.hasNext()) {
            String key = (String) iterator.next();
            Object object = map.get(key);    
            // 進(jìn)行遍歷刪除,當(dāng)值為空的時(shí)候刪除這條數(shù)據(jù)
            if (object.equals("")) {
                iterator.remove();
                map.remove(key);
            }
        }
        return map;
    }    
    /**
     * 將對(duì)象轉(zhuǎn)換成json
     * @param param
     * @return
     */
    public static String object2Json(Object param){
//        JSON.toJSONString();
        
        JSONObject jsonObject = JSONObject.fromObject(param);
        return jsonObject.toString();
    }    
    /**
     * 將json字符串轉(zhuǎn)換成map
     * @param json
     * @return
     */
    public static Map<String, Object> json2Map(String json) {
        com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(json);
        Map<String, Object> valueMap = new HashMap<String, Object>();
        valueMap.putAll(jsonObject);
        return valueMap;
    }
    /**
     * list對(duì)象轉(zhuǎn)換成json
     * @param param
     * @return
     */
    public static String list2String(List param){
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
        JSONArray json = JSONArray.fromObject(param, jsonConfig);
        return json.toString();
    }    
}

實(shí)體對(duì)象轉(zhuǎn)換成map

Contract contract = new Contract ();
        try{
            Map<String, Object> params = new HashMap<String, Object>();
            //將對(duì)象信息封裝到map
            Class clazz = contract.getClass();
            Field[] fields = clazz.getDeclaredFields();
            for (Field f : fields) {
                String name = f.getName();//當(dāng)前字段
                if(name.equals("serialVersionUID"))
                    continue;
                PropertyDescriptor descriptor = new PropertyDescriptor(name, clazz);//得到當(dāng)前字段信息
                Method readMethod = descriptor.getReadMethod();
                Object value = readMethod.invoke(contract);//得到當(dāng)前字段值
                if(null != value)
                    params.put(name, value);

前后端數(shù)據(jù)格式轉(zhuǎn)換

package com.sunsheen.hcc.fabric.utils;
import java.util.Date;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import com.sunsheen.edu.case1.entity.ResponseMsg;
import com.sunsheen.jfids.commons.beanutils.BeanUtils;
import com.sunsheen.jfids.commons.beanutils.ConvertUtils;
import com.sunsheen.jfids.commons.beanutils.converters.DateConverter;
import com.sunsheen.jfids.gson.Gson;
/**
 * 前后端數(shù)據(jù)轉(zhuǎn)換工具類
 * @author WangSong
 *
 */
public class WebUtils {    
    /**
     * 把request對(duì)象中的請(qǐng)求參數(shù)封裝到bean中
     * @param request    http請(qǐng)求
     * @param clazz        需要存入信息的對(duì)象class
     * @return
     */
    public static <T> T request2Bean(HttpServletRequest request,Class<T> clazz){
        try{
            T bean = clazz.newInstance();
            Enumeration e = request.getParameterNames();
            while(e.hasMoreElements()){
                    String name = (String) e.nextElement(); 
                    String value = request.getParameter(name);
                    if(null != value && !"".equals(value)){
                        //日期注冊(cè)
                        if(value.contains("-")){
                            DateConverter converter = new DateConverter();
                            converter.setPattern("yyyy-MM-dd");
                            ConvertUtils.register(converter,Date.class);
                        }
                        //對(duì)象賦值
                        BeanUtils.setProperty(bean, name, value);
                    }
            }
            return bean;
        }catch (Exception e) {
            throw new RuntimeException(e);
        }
    }    
    /**
     * 響應(yīng)到頁面的數(shù)據(jù)
     * @param code
     * @param data
     * @return
     */
    public static String responseMsg(Integer code, Object data) {
        ResponseMsg msg =  new ResponseMsg(data,code);
        return new Gson().toJson(msg);
    }    
    /**
     * 響應(yīng)到頁面的數(shù)據(jù)
     * @param data
     * @return
     */
    public static String responseMsg(Object data) {
        ResponseMsg msg =  new ResponseMsg(data);
        return new Gson().toJson(msg);
    }        
}

得到指定文件夾大小

package com.sunsheen.jfids.studio.monitor.utils.local;
import java.io.File;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
/**
 * 得到指定文件夾大小
 * @author WangSong
 *
 */
public class FileUtil {    
    private ExecutorService service;
    final private AtomicLong pendingFileVisits = new AtomicLong();    
    /** 通過CountdownLatch 得到文件夾大小的初始常量 **/
    final private AtomicLong totalSize = new AtomicLong();
    final private CountDownLatch latch = new CountDownLatch(1);    
    /** 通過BlockingQueue得到文件夾大小的初始常量 **/
    final private BlockingQueue<Long> fileSizes = new ArrayBlockingQueue<Long>(500);    
    /////////////////////////////////////CountdownLatch/////////////////////////////////////////
    //更新文件總大小(多線程)
    private void updateTotalSizeOfFilesInDir(final File file) {
        long fileSize = 0;//初始化文件大小
        //文件,直接返回大小
        if (file.isFile())
            fileSize = file.length();
        //文件夾,遍歷所有文件總大小
        else {
            final File[] children = file.listFiles();
            if(null == children){
                totalSize.set(0);
                return;
            }
            for (final File child : children) {
                //文件:直接加當(dāng)前文件的大小
                if (child.isFile())
                    fileSize += child.length();
                //文件夾:遍歷里面的文件的大小
                else {
                    pendingFileVisits.incrementAndGet();//增加一個(gè)當(dāng)前值(用來觀察這里的線程是否啟動(dòng))
                    service.execute(new Runnable() {
                        public void run() {
                            updateTotalSizeOfFilesInDir(child);
                        }
                    });
                }
            }
        }
        totalSize.addAndGet(fileSize);
        //如果沒有遍歷的子文件夾,則pendingFileVisits-1 = 0,當(dāng)前線程等待
        if (pendingFileVisits.decrementAndGet() == 0)
            latch.countDown();//發(fā)令槍 - 1
    }
    /**
     * 得到指定文件的大小
     * @param fileName    文件名(全路徑)
     * @return    文件夾大小(M)
     * @throws InterruptedException
     */
    public double getTotalSizeOfFile(final String filePath){
        service = Executors.newCachedThreadPool();//初始化線程池
        pendingFileVisits.incrementAndGet();//增加當(dāng)前值1
        double result = 0;//初始化結(jié)果
        try {
            updateTotalSizeOfFilesInDir(new File(filePath));
            latch.await(100, TimeUnit.SECONDS);//當(dāng)前線程等待,直到鎖存器計(jì)數(shù)到0
//            latch.await();
            //將k轉(zhuǎn)換成m
            long resultK = totalSize.longValue();
            BigDecimal bdK = new BigDecimal(resultK);
            BigDecimal bdM = bdK.divide(new BigDecimal(1024 * 1024)).setScale(5, RoundingMode.HALF_UP);//保留5位小數(shù)
            result = bdM.doubleValue();
        }catch (InterruptedException e) {
            e.printStackTrace();
        }finally {
            service.shutdown();
        }
        return result;
    }
    /////////////////////////////////////CountdownLatch/////////////////////////////////////////    
    /////////////////////////////////////BlockingQueue/////////////////////////////////////////
    private void startExploreDir(final File file) {
        pendingFileVisits.incrementAndGet();//記錄遍歷文件夾次數(shù)
        service.execute(new Runnable() {
            public void run() {
                exploreDir(file);
            }
        });
    }    
    private void exploreDir(final File file) {
        long fileSize = 0;
        if (file.isFile())
            fileSize = file.length();
        else {
            final File[] children = file.listFiles();
            if (children != null)
                for (final File child : children) {
                    if (child.isFile())
                        fileSize += child.length();
                    else {
                        startExploreDir(child);
                    }
                }
        }
        try {
            fileSizes.put(fileSize);
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }
        pendingFileVisits.decrementAndGet();
    }
    /**
     * 得到指定文件的大小
     * @param fileName
     * @return
     * @throws InterruptedException
     */
    public double getTotalSizeOfFile1(final String fileName){
        service = Executors.newFixedThreadPool(100);
        double result = 0;
        try {
            startExploreDir(new File(fileName));
            long totalSize = 0;
            while (pendingFileVisits.get() > 0 || fileSizes.size() > 0) {
                final Long size = fileSizes.poll(10, TimeUnit.SECONDS);
                totalSize += size;
            }
            //將k轉(zhuǎn)換成m
            BigDecimal bdK = new BigDecimal(totalSize);
            BigDecimal bdM = bdK.divide(new BigDecimal(1024 * 1024)).setScale(5, RoundingMode.HALF_UP);//保留5位小數(shù)            
            result = bdM.doubleValue();
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            service.shutdown();
        }
        return result;
    }
    /////////////////////////////////////BlockingQueue/////////////////////////////////////////        
    /**
     * 先根遍歷序遞歸刪除文件夾
     *
     * @param dirFile 要被刪除的文件或者目錄
     * @return 刪除成功返回true, 否則返回false
     */
    public boolean deleteFile(File dirFile) {
        // 如果dir對(duì)應(yīng)的文件不存在,則退出
        if (!dirFile.exists()) {
            return false;
        }
        if (dirFile.isFile()) {
            return dirFile.delete();
        } else {
            for (File file : dirFile.listFiles()) {
                deleteFile(file);
            }
        }
        return dirFile.delete();
    }    
}

遍歷指定文件夾下存在log日志文件的文件夾

package com.sunsheen.jfids.studio.monitor.utils.local;
import java.io.File;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import com.sunsheen.jfids.studio.monitor.common.LogInfo;
/**
 * 遍歷當(dāng)前eclipse運(yùn)行空間下所有項(xiàng)目名跟對(duì)應(yīng)日志
 * @author WangSong
 *
 */
public class LocalLogUtil {        
    private LocalLogUtil(){}        
    /**
     * 遍歷出存在項(xiàng)目日志文件的文件夾
     * @return
     */
    public static Map<String,Set<File>> getPlugLogs(){
        Map<String,Set<File>> associatedLogMap = new ConcurrentHashMap<String,Set<File>>();//
        //截取出正確的運(yùn)行空間目錄
        String runtimeSpace = LogInfo.RUNTIME_SPACE.substring(1,LogInfo.RUNTIME_SPACE.length() - 1);        
        String[] arr = runtimeSpace.split("/");
        StringBuffer sb = new StringBuffer();
        for(String space : arr)
            sb.append(space+File.separator);
        String logParentFolder = sb + LogInfo.LOG_PARENT_PATH;        
        File file = new File(logParentFolder);//存放所有日志文件的文件夾
        listExistingLogFolder(associatedLogMap,file);
        return associatedLogMap;
    }    
    //遍歷當(dāng)前文件夾下面所有文件
    private static void listExistingLogFolder(Map<String,Set<File>> associatedLogMap,File file){
        //遍歷當(dāng)前文件夾
        File[]  innerFiles = file.listFiles();
        for(File result : innerFiles){
            //存放對(duì)應(yīng)關(guān)系
            if(result.isDirectory())
                listExistingLogFolder(associatedLogMap,result);
            else{
                String name = result.getName();//當(dāng)前文件名
                //是日志文件,存入
                if(name.contains(".log")){
                    String projectName = result.getParent();//上層項(xiàng)目名路徑
                    //如果不是項(xiàng)目日志文件不記錄
                    if(!projectName.contains("com.sunsheen.jfids"))
                        continue;
                    //截取出正確的插件項(xiàng)目名
                    projectName = projectName.substring(projectName.lastIndexOf("c"));
                    //保證能添加所有的日志文件
                    if(associatedLogMap.containsKey(projectName)){
                        //當(dāng)前項(xiàng)目存在日志文件時(shí)
                        Set<File> currentLogs = associatedLogMap.get(projectName);
                        currentLogs.add(result);
                        associatedLogMap.put(projectName, currentLogs);//保存最新的關(guān)系
                    }else{
                        //不存在當(dāng)前項(xiàng)目日志文件時(shí)
                        Set<File> currentLogs = new HashSet<File>();
                        currentLogs.add(result);
                        associatedLogMap.put(projectName,currentLogs);//創(chuàng)建一個(gè)新關(guān)聯(lián)
                    }
                }
            }
        }
    }    
}

除了上述介紹外,還有一些Java常用工具類,以后大家都會(huì)接觸到。對(duì)工具比較感興趣的小伙伴可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java開發(fā)工具,里面有更多的知識(shí)在等著大家去學(xué)習(xí),希望對(duì)大家能夠有所幫助。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 中文字幕亚洲一区婷婷 | 日韩亚洲人成在线综合 | 日本一区二区视频免费播放 | 99精品国产成人a∨免费看 | 日韩欧美一级毛片视频免费 | 国产亚洲精品久久久久久久网站 | 91久久天天躁狠狠躁夜夜 | 久久99精品久久久久久综合 | jizz国产精品免费麻豆 | 欧美精品免费看 | 狠狠色丁香婷婷综合视频 | 午夜精品九九九九99蜜桃 | 亚洲天堂久久精品成人 | 噜噜啪 | 欧美日本黄色片 | 精品a视频 | 99视频精品免费99在线 | 久久99深爱久久99精品 | 日韩a一级欧美一级在线播放 | 66精品综合久久久久久久 | 久草免费在线视频 | 奇米影视777狠狠狠888不卡 | 国产精品久久久久一区二区 | 视频一区二区国产无限在线观看 | 久久久久综合精品福利啪啪 | 伊人网综合在线视频 | 欧美日韩高清观看一区二区 | 日本国产一区二区三区 | 国产高清国产精品国产k | 香蕉视频免费在线看 | 一区二区免费在线观看 | 久久综合九色综合97_ 久久久 | 伊人久久精品一区二区三区 | 福利视频在线观看午夜 | 久久99热精品 | 最新亚洲精品国自产在线观看 | 久久精品国产国产精品四凭 | 一区二区三区高清不卡 | www.亚洲成人.com | 亚洲专区第一页 | 亚洲国产精品成 |