java合並一個文件夾下所有txt文件,輸出到另一個txt


最近寫了個單元測試,遞歸調用方法,把同一個文件夾里所有的txt合並輸出到一個txt文件。參考了兩個博客,分別是已有的方法,還有個就是檢測txt文件所用編碼的技術貼。如果不檢測txt文件的編碼,那么
轉換出的txt文件大概率會亂碼。一開始嘗試UTF-8和GBK等編碼格式轉換后都是亂碼,一度以為是方法的問題。后來檢測到原txt的編碼是
UTF-16LE。。。這才轉換成功。

第一部分是參考了https://www.cnblogs.com/braveym/p/10810153.html,加入了遞歸調用

import java.io.*;

public class TxtCombination {
public static void main(String[] args) throws IOException {

String originPath = "C:\\test\\help";
textCombiner(new File(originPath));
}

/**
* 遞歸調用該方法,當目錄下無文件夾時,輸出當前目錄下所有txt文件,合並為一個txt文件,文件名由父文件夾名連接而成
* @param
*/
public static void textCombiner(File file) throws IOException{
//首先判斷傳入的參數是不是純文件夾(無子文件夾)
Boolean dirFlag = false;
for (File temp : file.listFiles()) {
if (temp.isDirectory()) {
dirFlag = true;
textCombiner(temp);
}
}

if (dirFlag) {
return;
}
String directoryPath = file.getAbsolutePath().replace("C:\\test\\help\\","").replace("\\", "-");

// String joinedName = String.join("-", split);
//定義輸出目錄
String FileOut="D:\\Mycode\\SBgong\\output\\"+ directoryPath;
// new File(FileOut).mkdirs();
String filePath = FileOut + ".txt";
new File(filePath).createNewFile();
BufferedWriter bw=new BufferedWriter(new FileWriter(filePath));
File[] listFiles = new File(file.getAbsolutePath()).listFiles();
for (File child : listFiles) {
if (child.isFile() && child.getName().endsWith("txt")) {
//不加編碼的格式,讀取的內容很有可能是亂碼的
// BufferedReader br = new BufferedReader(new FileReader(child));
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(child),"UTF-16LE"));
String line;
while((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();
}
br.close();
}
}
bw.close();
}
}

第二部分:
參考https://blog.csdn.net/yili0000a/article/details/82703296


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM