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 {
//outputStreamWriter
try {
if (outputStreamWriter != null) {
outputStreamWriter.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* LineNumberReader 类使用示例
*/
public static String readFromFile(String filePath) {
// 返回结果集
StringBuffer logContentBuffer = new StringBuffer();
// read file
LineNumberReader 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 {
//关闭lineNumberReader
try {
if (lineNumberReader != null) {
lineNumberReader.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return logContentBuffer.toString();
}
}
测试方法:
@Test
void 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);
}
执行结果: