1. 如何一行一行读取文件?
或者BufferedReader 的子类:
(idea如何查看一个类的的子类?)
工具类:
package com.springboot.demo.util;import java.io.*;/*** @program: springboot* @description:* @author: gyg* @create: 2021-08-29 13:35**/
public class IoUtils {/*** LineNumberReader 类使用示例*/public static void writeToFile(String filePath,String content) {OutputStreamWriter outputStreamWriter = null;try {//构造LineNumberReader实例 ,指定编码集 防止乱码outputStreamWriter = new OutputStreamWriter(new FileOutputStream(filePath), "utf-8");outputStreamWriter.write(content);// flush()方法起到强制写出的效果,在调用close()方法前,调用用flush()方法,这样能保证数据完整性outputStreamWriter.flush();} catch (FileNotFoundException ex) {ex.printStackTrace();} catch (IOException ex) {ex.printStackTrace();} finally {//outputStreamWritertry {if (outputStreamWriter != null) {outputStreamWriter.close();}} catch (IOException ex) {ex.printStackTrace();}}}/*** LineNumberReader 类使用示例*/public static String readFromFile(String filePath) {// 返回结果集StringBuffer logContentBuffer = new StringBuffer();// read fileLineNumberReader lineNumberReader = null;try {//构造LineNumberReader实例 ,指定编码集 防止乱码lineNumberReader = new LineNumberReader(new InputStreamReader(new FileInputStream(filePath),"utf-8"));// 将读取到的一行内容 放到 变量里String line ;// 父类 BufferedReader 就可以 readLine() 一行一行读取 ,// 所以 可以不用 LineNumberReader 对象,直接用 BufferedReader reader=new BufferedReader(new FileReader(file));while ((line = lineNumberReader.readLine()) != null) {System.out.println("Line " + lineNumberReader.getLineNumber() +": " + line);logContentBuffer.append(line).append("\n");}} catch (FileNotFoundException ex) {ex.printStackTrace();} catch (IOException ex) {ex.printStackTrace();} finally {//关闭lineNumberReadertry {if (lineNumberReader != null) {lineNumberReader.close();}} catch (IOException ex) {ex.printStackTrace();}}return logContentBuffer.toString();}}
测试方法:
@Testvoid LineNumberReaderTest() {StringBuffer sb = new StringBuffer();sb.append("1. 12345672345678");sb.append("\n");sb.append("2. 嘿嘿嘿");sb.append("\n");sb.append("3. 哈哈哈哈哈");sb.append("\n");sb.append("4. 呜呜呜呜");sb.append("\n");// 写入IoUtils.writeToFile("G:\\xxljob\\2021-08-29\\mytext.txt",sb.toString());// String result = IoUtils.readFromFile("G:\\xxljob\\2021-08-29\\mytext.txt");System.out.println(result);System.out.println(result);}
执行结果: