/**
* 功能:Java读取目录下txt文件的内容
* 步骤:先获得目录句柄,如果是文件直接读取文件,如果是目录,继续迭代处理
* @param directoryPath
*/
public static void readTxtDirectory(String directoryPath){
File dir = new File(directoryPath);
if(dir.isFile()) { //读取文件
readTxtFile(directoryPath);
} else if(dir.isDirectory()) { //读取目录
File[] files = dir.listFiles();
for(int i=0;i<files.length;i++){
System.out.println((files[i].isDirectory()?"目录 :":"文件 :")+files[i].getName());
if(files[i].isFile()) {
readTxtFile(files[i].getAbsolutePath());
} else {
readTxtDirectory(files[i].getAbsolutePath());
}
}
} else {
System.out.println("路径不存在!");
}
}
/**
* 功能:Java读取Txt文件的内容
* 步骤:1:先获得文件句柄
* 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取
* 3:读取到输入流后,需要读取生成字节流
* 4:一行一行的输出。readline()。
* 备注:需要考虑的是异常情况
* @param filePath
*/
public static void readTxtFile(String filePath){
try {
String encoding="GBK";
File file = new File(filePath);
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){
lineTxt = lineTxt.trim();
if(lineTxt.length() > 0) {
String regEx = "[' ']+"; // 一个或多个空格
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(lineTxt);
String[] txtArray = m.replaceAll(";").trim().split(";");
if(txtArray.length == 6 && txtArray[0].length() == 15) {
System.out.println(lineTxt);
}
}
}
read.close();
} else {
System.out.println("文件不存在!");
}
} catch (Exception e) {
System.out.println("读取文件内容出错");
e.printStackTrace();
}
}