zoukankan      html  css  js  c++  java
  • 自己做的一个Check文件内容是否一致的小工具

    GetAllFiles.java  (获取指定文件夹中的文件,并检查内容是否一致)

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    
    public class GetAllFiles {
    
    	// 文件格式
    	private static List<CsvInfo> listCsvInfo = new ArrayList<CsvInfo>();
    
    	public static void main(String[] args) {
    
    		// 路径 这里写一个路径进去
    		String path = "D:\WEB-INF\view";
    
    		// 调用方法
    		// getFiles(path);
    		getFiles(path, ".jsp");
    
    		StringBuffer content = new StringBuffer();
    		String temp = "";
    		for (int i = 0; i < listCsvInfo.size(); i++) {
    			temp = String.valueOf(i + 1) + "," + listCsvInfo.get(i).getFileName() + ",Line:"
    					+ listCsvInfo.get(i).getLineNumber() + "," + listCsvInfo.get(i).getHeaderParam() + ","
    					+ listCsvInfo.get(i).getFormAction() + "," + listCsvInfo.get(i).getResult() + ","
    					+ listCsvInfo.get(i).getFilePath();
    			System.out.println(temp);
    			content.append(temp + "
    ");
    		}
    
    		FileUtil.writeUtf8File("d:\test1.csv", content.toString());
    	}
    
    	/**
    	 * 
    	 * 递归获取某路径下的所有文件,文件夹,并输出
    	 * 
    	 */
    	public static void getFiles(String path) {
    		File file = new File(path);
    		// 如果这个路径是文件夹
    		if (file.isDirectory()) {
    			// 获取路径下的所有文件
    			File[] files = file.listFiles();
    
    			for (int i = 0; i < files.length; i++) {
    				// 如果还是文件夹 递归获取里面的文件 文件夹
    				if (files[i].isDirectory()) {
    					System.out.println("目录:" + files[i].getPath());
    					getFiles(files[i].getPath());
    				} else {
    					System.out.println("文件:" + files[i].getPath());
    				}
    
    			}
    		} else {
    			System.out.println("文件:" + file.getPath());
    		}
    	}
    
    	/**
    	 * 
    	 * 递归获取某路径下的所有文件,文件夹,并输出
    	 * 
    	 */
    	public static void getFiles(String path, String fileType) {
    		File file = new File(path);
    		// 如果这个路径是文件夹
    		if (file.isDirectory()) {
    			// 获取路径下的所有文件
    			File[] files = file.listFiles();
    
    			for (int i = 0; i < files.length; i++) {
    				// 如果还是文件夹 递归获取里面的文件 文件夹
    				if (files[i].isDirectory()) {
    					// System.out.println("目录:" + files[i].getPath());
    					getFiles(files[i].getPath(), fileType);
    				} else {
    					if (files[i].getName().endsWith(".jsp")) {
    						// System.out.println("jsp文件:" + files[i].getPath());
    						readTxtFile(files[i].getPath());
    					}
    				}
    
    			}
    		} else {
    			if (file.getName().endsWith(".jsp")) {
    				System.out.println("jsp文件:" + file.getPath());
    			}
    		}
    
    	}
    
    	/**
    	 * 功能:Java读取txt文件的内容 步骤:1:先获得文件句柄 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取
    	 * 3:读取到输入流后,需要读取生成字节流 4:一行一行的输出。readline()。 备注:需要考虑的是异常情况
    	 * 
    	 * @param filePath
    	 */
    	public static void readTxtFile(String filePath) {
    		try {
    			String encoding = "UTF-8";
    			File file = new File(filePath);
    
    			boolean pickupStartFlg = false;
    			boolean pickupEndFlg = false;
    			CsvInfo csvInfo = new CsvInfo();
    			int lineNumber = 0;
    			int strarLine = 0;
    
    			if (file.isFile() && file.exists()) { // 判断文件是否存在
    				InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);// 考虑到编码格式
    				BufferedReader bufferedReader = new BufferedReader(read);
    				String lineTxt = null;
    
    				while ((lineTxt = bufferedReader.readLine()) != null) {
    					lineNumber++;
    					// System.out.println(lineTxt);
    
    					// 取得header文件的 value字符串
    					if (checkString(lineTxt, "page="../../common/headerNew.jsp"")) {
    						pickupStartFlg = true;
    						strarLine = lineNumber;
    					}
    
    					if (pickupStartFlg && (strarLine + 3) < lineNumber && checkString(lineTxt, "</jsp:include>")) {
    						pickupEndFlg = true;
    					}
    
    					if (pickupStartFlg == true && pickupEndFlg == false) {
    						if (checkString(lineTxt, "<jsp:param name="HeaderParam"")) {
    							String headerParam = lineTxt.replaceAll("<jsp:param name="HeaderParam" value="", "");
    							headerParam = headerParam.replaceAll("" />", "");
    							headerParam = headerParam.replaceAll("	", "").trim();
    
    							csvInfo.setFileName(file.getName());
    							csvInfo.setFilePath(filePath);
    							csvInfo.setHeaderParam(headerParam);
    							csvInfo.setLineNumber(lineNumber);
    
    							listCsvInfo.add(csvInfo);
    							pickupEndFlg = true;
    						}
    					}
    
    					// 取得formAction的.do字符串
    					if (pickupStartFlg == true && pickupEndFlg == true) {
    						if (checkString(lineTxt, "action="${pageContext.request.contextPath}")) {
    							int start = lineTxt.indexOf("/") + 1;
    							int end = 0;
    							String formAction = lineTxt.substring(start);
    							end = formAction.indexOf(".do");
    							formAction = formAction.substring(0, end);
    							csvInfo.setFormAction(formAction);
    						}
    					}
    
    					// Check是否相等,相等OK, 不相等NG
    					if (csvInfo.getHeaderParam().equals(csvInfo.getFormAction())) {
    						csvInfo.setResult("OK");
    					} else {
    						csvInfo.setResult("NG");
    					}
    				}
    
    				read.close();
    			} else {
    				System.out.println("找不到指定的文件");
    			}
    
    		} catch (Exception e) {
    			System.out.println("读取文件内容出错");
    			e.printStackTrace();
    		}
    
    	}
    
    	private static boolean checkString(String strSend, String searchStr) {
    
    		if (strSend.indexOf(searchStr) > 0) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    
    }
    

      

    FileUtil.java  (文件的读写)

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.UnsupportedEncodingException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class FileUtil {
    
    	public static void main(String[] args) throws Exception {
    		List<String> fileNames = new ArrayList<String>();
    		FileUtil.findFileList(new File("F:\HTML\bootstrap"), fileNames);
    		System.out.println();
    		for (String value : fileNames) {
    			System.out.println("file:" + value);
    		}
    
    	}
    
    	/**
    	 * 读取目录下的所有文件
    	 * 
    	 * @param dir       目录
    	 * @param fileNames 保存文件名的集合
    	 * @return
    	 */
    	public static void findFileList(File dir, List<String> fileNames) {
    		if (!dir.exists() || !dir.isDirectory()) {// 判断是否存在目录
    			return;
    		}
    		String[] files = dir.list();// 读取目录下的所有目录文件信息
    		for (int i = 0; i < files.length; i++) {// 循环,添加文件名或回调自身
    			File file = new File(dir, files[i]);
    			if (file.isFile()) {// 如果文件
    				fileNames.add(dir + "\" + file.getName());// 添加文件全路径名
    			} else {// 如果是目录
    				findFileList(file, fileNames);// 回调自身继续查询
    			}
    		}
    	}
    	
    	// "test.txt"
    	public static void writeUtf8File(String fileName, String fileContent) {
    		// java中文件操作体现了设计模式中的装饰者模式 。
    		// 以UTF-8编码写入文件:
    		FileOutputStream fos = null;
    		OutputStreamWriter osw = null;
    		try {
    			fos = new FileOutputStream(fileName);
    			osw = new OutputStreamWriter(fos, "UTF-8");
    			osw.write(fileContent);
    			osw.flush();
    
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				osw.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    
    	}
    
    	public static void readUtf8File(String fileName) {
    		// 以UTF-8编码读取文件:
    		FileInputStream fis = null;
    		InputStreamReader isr = null;
    		String fileContent = "";
    
    		try {
    			fis = new FileInputStream(fileName);
    			isr = new InputStreamReader(fis, "UTF-8");
    			BufferedReader br = new BufferedReader(isr);
    			String line = null;
    			while ((line = br.readLine()) != null) {
    				fileContent += line;
    				fileContent += "
    "; // 补上换行符
    			}
    			System.out.println(fileContent);
    
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				isr.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	
    }
    

      

    CsvInfo.java  (文件内容的实体类)

    public class CsvInfo {
    
    	private String fileName = "";
    	private String headerParam = "";
    	private String formAction = "";
    	private String result = "";
    	private String filePath = "";
    	private int lineNumber  = 0;
    	
    	public String getFileName() {
    		return fileName;
    	}
    	public void setFileName(String fileName) {
    		this.fileName = fileName;
    	}
    	public String getHeaderParam() {
    		return headerParam;
    	}
    	public void setHeaderParam(String headerParam) {
    		this.headerParam = headerParam;
    	}
    	public String getFormAction() {
    		return formAction;
    	}
    	public void setFormAction(String formAction) {
    		this.formAction = formAction;
    	}
    	public String getResult() {
    		return result;
    	}
    	public void setResult(String result) {
    		this.result = result;
    	}
    	public String getFilePath() {
    		return filePath;
    	}
    	public void setFilePath(String filePath) {
    		this.filePath = filePath;
    	}	
    	public int getLineNumber() {
    		return lineNumber;
    	}
    	public void setLineNumber(int lineNumber) {
    		this.lineNumber = lineNumber;
    	}
    	
    }
    

      

  • 相关阅读:
    查看mysql版本的四种方法及常用命令
    newInstance和new的区别(good)
    Citrix 服务器虚拟化之六 Xenserver虚拟机创建与快照
    Java实现 蓝桥杯 算法训练 排序
    Java实现 蓝桥杯 算法训练 排序
    Java实现 蓝桥杯 算法训练 排序
    Java实现 蓝桥杯 算法训练 2的次幂表示
    Java实现 蓝桥杯 算法训练 2的次幂表示
    Java实现 蓝桥杯 算法训练 前缀表达式
    Java实现 蓝桥杯 算法训练 前缀表达式
  • 原文地址:https://www.cnblogs.com/wzihan/p/15312555.html
Copyright © 2011-2022 走看看