java批量比较文件替换富文本资源路径

package com.b2b.index;

import com.hotent.core.web.query.QueryFilter;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;


import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class ExchangeResourceClass {


    
    public void exchangeResource(){
        String pendingReplacePath = "http://file1.XXXX.com/20200326132137.png";  //待替换文件路径
        String replacePath = "http://file1.XXXXX.com/20201021155829.png";  //提换文件路径
        String olderPath3c = DigestUtils.md5Hex(getUrlFileByte(pendingReplacePath));
        //读取数据库数据,待替换文本
        QueryFilter qfilter = new QueryFilter();
        qfilter.addFilter("sequence","1");
        List<Appdetailtemplate> appdetailtemplateList =  appdetailtemplateService.getAll(qfilter);
        Long count = 0L;
        for (Appdetailtemplate detail: appdetailtemplateList) {
            String URLPattern = "((https?|ftp)://|www[0-9]*?\\.)(?<domain>([A-Z0-9\\-]+\\.)+[A-Z]{1,3})+(([/;\\?][A-Z0-9\\.\\-_/\\.#%:;&=]+)+)?";
            String content =    detail.getContext();  //待提取富文本内容区
            System.out.println("ex---------"+count++);
            if (content==null || content =="" ||StringUtils.isBlank(content) ) continue;
            Pattern pattern = Pattern.compile(URLPattern, Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(content);
            String link = "";
            while (matcher.find()) {
                link=matcher.group();
                String linkCode =  DigestUtils.md5Hex(getUrlFileByte(link));
                if (isSameFiles(linkCode,"1")){
                     System.out.println("hs777--------------"+link);
                     content =   content.replace(link,replacePath);
                    System.out.println("替换后的数据----------"+content);
                }else{
                    link="";
                }
                break;
            }

        }

        System.out.println("ex结束");
    }

    /**
     * 验证两个文件字节流是否相等
     * @return boolean true 相等
     * @throws
     */
    private static boolean isSameResources(String older, String  newer) {
        String firstFileMd5 = older;
        String secondFileMd5 = "";
        if ( "1".equals(newer)){
            secondFileMd5 = "a808037f4d68e40cff05fa9d9a35f5f4";
        }else{
            secondFileMd5 = newer;
        }

      // String secondFileMd5 = "a808037f4d68e40cff05fa9d9a35f5f4";
        if (firstFileMd5.equals(secondFileMd5)) {
          //  System.out.println("---- equals ------ md5 " + firstFileMd5);
            return true;
        } else {
          System.out.println(firstFileMd5 + " is firstFileMd5 ++ unequal ++ secondFileMd5 = " + secondFileMd5);
            return false;
        }
    }


    /**
     * 验证两个文件字节流是否相等
     * @return boolean true 相等
     * @throws
     */
    private static boolean isSameFiles(String older, String  newer) {
        String firstFileMd5 = DigestUtils.md5Hex(getUrlFileByte(older));
        String secondFileMd5 = DigestUtils.md5Hex(getUrlFileByte(newer));
        if (firstFileMd5.equals(secondFileMd5)) {
            System.out.println("---- equals ------ md5 " + firstFileMd5);
            return true;
        } else {
            System.out.println(firstFileMd5 + " is firstFileMd5 ++ unequal ++ secondFileMd5 = " + secondFileMd5);
            return false;
        }
    }



    /**
     * 获取线上文件流
     * @param url
     * @return
     * @throws IOException
     */
    private static byte[] getUrlFileByte(String url) {
        try {
            URL urlConet = new URL(url);
            HttpURLConnection con = (HttpURLConnection)urlConet.openConnection();
            con.setRequestMethod("GET");
            con.setConnectTimeout(4 * 1000);
            InputStream inStream = con .getInputStream();    //通过输入流获取图片数据
            ByteArrayOutputStream outStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[2048];
            int len = 0;
            while( (len=inStream.read(buffer)) != -1 ){
                outStream.write(buffer, 0, len);
            }
            inStream.close();
            byte[] data =  outStream.toByteArray();
            return data;
        }catch (Exception e){
            e.printStackTrace();
        }
        return new byte[0];
    }

    /**
     * 获取本地文件流方法
     * @param name
     * @return
     */
    public static byte[] getByte(String name) {
        // 得到文件长度
        File file = new File(name);
        byte[] b = new byte[(int) file.length()];
        System.out.println(file.length());
        try {
            InputStream in = new FileInputStream(file);
            try {
                in.read(b);
                System.out.println(in.read());
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        }
        return b;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值