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