前因:
因为最近有个需求要去处理一个文本 提取指定那个位置的字符
如果说几十行 可能手工就能完成了 假如是在线上的一业务环境。成千上万的数据 人工要去处理到什么时候
比如我的文本格式如下图:
我要去提取每一行中 《12》那个字段 前后都是不一样的的字段该怎么去操作呢?
开始我也没想到思路 毕竟这些很基础的东西 没怎么经常去操作 。最近这几年都是在学习SSM 和Springboot 、Springcloud。IO流是挺长时间没有接触到了。开始的思路只能是处理单行的数据 指定截取。
后来询问了朋友 得到了思路。
具体代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
public class Test1 {
public static void main(String[] args) {
List<String> list = new ArrayList<>(); //定义一个处理字符的数组
String s = null;
File f1 = new File("C:/Users/Administrator/Desktop/s1.txt");//第一个需要处理的文本
File f2 = new File("C:/Users/Administrator/Desktop/s2.txt");//第二个存放处理完毕数据的文本
try {
// 读取“第一个需要处理的.txt”文件
FileReader fileReader = new FileReader(f1);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while ((s = bufferedReader.readLine()) != null) {
list.add(s);
}
// 写入“第二个空白的.txt”文件
FileWriter fileWriter = new FileWriter(f2);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
for (int i = 0; i < list.size(); i++) {
bufferedWriter.write(list.get(i), 15, 2);// 从第十二个截取 截取五个字符串
bufferedWriter.newLine();
}
// 关闭流
bufferedReader.close();
fileReader.close();
bufferedWriter.close();
fileWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
效果: