這里實現兩個方法
1.逐行讀取txt文件,並以"," 逗號位分隔符 ,把讀到的內容轉為map或者實體類
2.把內容 寫入txt文件
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TxtUtils { Logger logger = LoggerFactory.getLogger(TxtUtils.class); /** * 逐行讀取TXT並處理,轉為Map或者其它Object */ @Test public void readTxtToObject() { Map<String, String> map = new HashMap<String, String>(); try { String path = "C:\\Test\\test.txt"; BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(path)), "UTF-8")); String lineTxt = null; // 逐行讀取 while ((lineTxt = br.readLine()) != null) { // 每行數據以逗號分隔 String[] names = lineTxt.split(","); // 處理數據, 可以轉成entity, 在這兒轉換成map map.put(names[0], names[1]); } br.close(); } catch (Exception e) { logger.error("Error Message :", e); } logger.info("map.size()=" + map.size()); } /** * 逐行讀取TXT文件並打印到控制台 */ @Test public void readTxt() { try { String path = "C:\\Test\\test.txt"; BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(path)), "UTF-8")); String lineTxt = null; int count = 0; // 逐行讀取 while ((lineTxt = br.readLine()) != null) { // 輸出內容到控制台 logger.info(lineTxt); count++; } br.close(); logger.info("count=" + count); } catch (Exception e) { logger.error("Error Message :", e); } } /** * 方法1寫入txt * * @param filePath * @param message * @throws IOException */ public void writetoTxt1(String folder, String filename, String message) throws IOException { File files = new File(folder); files.mkdirs(); File file = new File(folder + File.separator + filename); file.createNewFile(); BufferedWriter out = new BufferedWriter(new FileWriter(file)); out.write(message); out.flush(); } /** * 方法2寫入txt * * @param foler * @param file * @param messageList * @throws FileNotFoundException */ public void writeToTxt(String folder, String file, List<String> messageList) throws FileNotFoundException { File files = new File(folder); files.mkdirs(); FileOutputStream fos = new FileOutputStream(folder + File.separator + file); // 逐行寫入 PrintWriter pw = new PrintWriter(fos); for (String message : messageList) { pw.println(message); } pw.close(); } /** * 測試方法2寫入txt */ @Test public void writeToTxt() { String folder = "C:\\Test0"; String filename = "000.txt"; String message = "this is message \n"; for (int i = 0; i < 3; i++) { message += "abc \n"; } try { writetoTxt1(folder, filename, message); } catch (IOException e) { logger.error("Error Message :", e); } } /** * 測試方法2寫入txt */ @Test public void testWriteToTxt() { String folder = "C:\\Test"; String file = "test.txt"; List<String> messageList = new ArrayList<>(); messageList.add("ok,0"); messageList.add("no,1"); messageList.add("pass,2"); messageList.add("okay,3"); try { writeToTxt(folder, file, messageList); } catch (FileNotFoundException e) { logger.error("Error Message :", e); } } }