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 list = new ArrayList();//所有的后缀为.js,.css,.jsp,.html的文件地址
	private static List list1 = new ArrayList();//所有图片的名称
	private static List list2 = new ArrayList();//所有js文件的名称

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

	/**
	 *删除项目中没用的图片 
	 * @author mengz
	 * @date 2017年3月13日 上午10:23:57
	 */
	private static void deleteAllNoUseImg() {
		List lsit = new ArrayList();
		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 lsit = new ArrayList();
		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());
		}

	}

}

你可能感兴趣的:(java)