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;
    	}
    	
    }
    

      

  • 相关阅读:
    weblogic启动失败java.lang.NullPointerException
    weblogic应用加载不上
    easychm生成帮助文件时出现的目录导航乱码问题
    An error report file with more information is saved as hs_err_pid2756.log
    js parseint
    修改myelipse中部署路径deploy location内容的方法
    FusionCharts制作实时刷新图
    关于Jquery,js脚本加载执行先后顺序的一些事
    jeesite+mysql,数据导入出现问题。
    AMD Radeon HD 7650A显卡问题
  • 原文地址:https://www.cnblogs.com/wzihan/p/15312555.html
Copyright © 2011-2022 走看看