/**
* 功能: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();
}
}