找出项目中没有使用的js,图片文件并删除

java

浏览数:218

2019-1-13


CleanGarbageUtil.java

package com.iptop.service.base;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class CleanGarbageUtil {
    public CleanGarbageUtil() {
    }
    private static List<String> list = new ArrayList<String>();//所有的后缀为.js,.css,.jsp,.html的文件地址
    private static List<String> list1 = new ArrayList<String>();//所有图片的名称
    private static List<String> list2 = new ArrayList<String>();//所有js文件的名称

    public static void main(String[] args) {
        //删除项目中未使用的图片
        //deleteAllNoUseImg();
        
        //删除项目中未使用的js文件
        deleteAllNoUseJs();
    }   

    /**
     *删除项目中没用的图片 
     * @author mengz
     * @date 2017年3月13日 上午10:23:57
     */
    private static void deleteAllNoUseImg() {
        List<String> lsit = new ArrayList<String>();
        try {
            String path = System.getProperty("user.dir");// 获取根路径
            path = path.substring(0, path.lastIndexOf("\\") + 1);
            // 找出E:\SVNpro\develop\app.web\src\main\webapp下面所有的后缀为.js,.css,.jsp,.html的文件地址
            readfile(path+"app.web\\src\\main\\webapp",1);
            // 找出E:/SVNpro/develop/app.web/src/main/webapp/image下面的所有图片的名称
            String realpath= "app.web/src/main/webapp/images";
            readfile1(path+realpath);
            for (String s : list1) {
                String content =  s.substring(s.lastIndexOf("\\")+1);
                boolean flag = false;
                for (String ss : list) {
                    try {
                        FileReader fr = new FileReader(ss);
                        @SuppressWarnings("resource")
                        BufferedReader br = new BufferedReader(fr);
                        String temp = "";// 用于临时保存每次读取的内容
                        while (temp != null) {
                            
                            temp = br.readLine();
                            if (temp != null && temp.contains(content)) {
                                System.out.println("找到已使用的图片" + content);
                                flag = true;
                                break;
                            }
                        }
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (!flag) {
                    System.out.println("------------没有使用的图片路径" + s);
                    File file = new File(s);
                    System.out.println("将要删除的文件名"+file.getName());
//                  file.delete();
                    lsit.add(s);
                }
            }
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        StringBuilder sb = new StringBuilder();
        for(String s : lsit){
            sb.append(s+"\r\n");
        }
        
        try {
            FileWriter fw = new FileWriter("F:\\未使用的图片名称.txt");
            PrintWriter pw = new PrintWriter(fw);
            pw.println(sb.toString());
            pw.flush();
            pw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } 
    

    /**
     * 删除项目中未引用的js文件 
     * @author mengz
     * @date 2017年3月13日 上午11:41:56
     */
    private static void deleteAllNoUseJs() {
        List<String> lsit = new ArrayList<String>();
        try {
            String path = System.getProperty("user.dir");// 获取根路径
            path = path.substring(0, path.lastIndexOf("\\") + 1);
            // 找出E:\SVNpro\develop\app.web\src\main\webapp下面所有的后缀为.css,.jsp,.html的文件地址
            readfile(path+"app.web\\src\\main\\webapp",2);
            // 找出E:/SVNpro/develop/app.web/src/main/webapp下面的所有js文件
            String realpath= "app.web/src/main/webapp";
            readfile2(path+realpath);
            for (String s : list2) {
                String content =  s.substring(s.lastIndexOf("\\")+1);
                System.out.println("原文件=="+content);
                boolean flag = false;
                for (String ss : list) {
                    try {
                        FileReader fr = new FileReader(ss);
                        @SuppressWarnings("resource")
                        BufferedReader br = new BufferedReader(fr);
                        String temp = "";// 用于临时保存每次读取的内容
                        while (temp != null) {
                            
                            temp = br.readLine();
                            if (temp != null && temp.contains(content)) {
                                System.out.println("找到已使用的js=  " + content);
                                flag = true;
                                break;
                            }
                        }
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (!flag) {
                    System.out.println("------------没有使用的js路径" + s);
                    File file = new File(s);
                    System.out.println("将要删除的js=  "+file.getName());
//                  file.delete();
                    lsit.add(s);
                }
            }
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        StringBuilder sb = new StringBuilder();
        for(String s : lsit){
            sb.append(s+"\r\n");
        }
        
        try {
            FileWriter fw = new FileWriter("F:\\未使用的js名称.txt");
            PrintWriter pw = new PrintWriter(fw);
            pw.println(sb.toString());
            pw.flush();
            pw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } 
    

    /**
     * 找文件夹下面所有的后缀为.js,.css,.jsp,.html的文件
     * 
     * @author mengz
     * @date 2017年2月15日 上午11:43:50
     */
    public static void readfile(String filepath,int type)
            throws FileNotFoundException, IOException {
        try {

            File file = new File(filepath);
            if (!file.isDirectory()) {
                System.out.println("文件");
                System.out.println("path==========" + file.getPath());
                System.out.println("absolutepath==========="
                        + file.getAbsolutePath());
                System.out.println("name===========" + file.getName());

            } else if (file.isDirectory()) {
                String[] filelist = file.list();
                for (int i = 0; i < filelist.length; i++) {
                    File readfile = new File(filepath + "\\" + filelist[i]);
                    if (!readfile.isDirectory()) {
                        String filename = readfile.getName();
                        String lastname = filename.substring(filename
                                .lastIndexOf("."));
                        // System.out.println("name=" + readfile.getName());
                        // System.out.println(lastname);
                        if(type==1){
                            if (lastname.equals(".css") 
                                    || lastname.equals(".jsp")
                                    || lastname.equals(".html")
                                    || lastname.equals(".js")
                                    ) {
                                String realpath = readfile.getPath();
                                // System.out.println("path=" + readfile.getPath());
                                list.add(realpath);
                            }
                        }else if(type==2){
                            if (lastname.equals(".css") 
                                    || lastname.equals(".jsp")
                                    || lastname.equals(".html")) {
                                String realpath = readfile.getPath();
                                // System.out.println("path=" + readfile.getPath());
                                list.add(realpath);
                            }
                        }

                    } else if (readfile.isDirectory()) {
                        readfile(filepath + "\\" + filelist[i],type);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            System.out.println("readfile()   Exception:" + e.getMessage());
        }
    }
    
    public static void readfile2(String filepath)
            throws FileNotFoundException, IOException {
        try {

            File file = new File(filepath);
            if (!file.isDirectory()) {
                System.out.println("文件");
                System.out.println("path==========" + file.getPath());
                System.out.println("absolutepath==========="
                        + file.getAbsolutePath());
                System.out.println("name===========" + file.getName());

            } else if (file.isDirectory()) {
                String[] filelist = file.list();
                for (int i = 0; i < filelist.length; i++) {
                    File readfile = new File(filepath + "\\" + filelist[i]);
                    if (!readfile.isDirectory()) {
                        String filename = readfile.getName();
                        String lastname = filename.substring(filename
                                .lastIndexOf("."));
//                       System.out.println("name=" + readfile.getName());
//                       System.out.println(lastname);
                        if ( lastname.equals(".js") && !lastname.equals(".json") && !lastname.equals(".jsp")) {
                            String realpath = readfile.getPath();
                             System.out.println("path=" + readfile.getPath());
                            list2.add(realpath);
                        }

                    } else if (readfile.isDirectory()) {
                        readfile2(filepath + "\\" + filelist[i]);
                    }
                }
            }
        } catch (FileNotFoundException e) {
            System.out.println("readfile2()   Exception:" + e.getMessage());
        }
    }   /**
     * 找出文件里面面的所有图片的名字
     * 
     * @author mengz
     * @date 2017年2月15日 上午11:42:35
     */
    public static void readfile1(String filepath)
            throws FileNotFoundException, IOException {
        try {
            File file = new File(filepath);
            String[] filelist = file.list();
            for (int i = 0; i < filelist.length; i++) {
                File readfile = new File(filepath + "\\" + filelist[i]);
                if (!readfile.isDirectory()) {
                    list1.add(readfile.getPath());
                } else if (readfile.isDirectory()) {
                    readfile1(filepath + "\\" + filelist[i]);
                }
            }

        } catch (FileNotFoundException e) {
            System.out.println("readfile()   Exception:" + e.getMessage());
        }

    }

}