package com.lt.service.qiyouji.api;
import java.io.*;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestFile {
public static void main(String[] args) {
String filePath = "D:/test/file.txt"; // 输入文件路径
File file = new File(filePath);
//将读取出来的数据存入list集合、一个备份、一个正常运行
while (true) {
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String firstLine = br.readLine();
if (firstLine!=null){
System.out.println(firstLine);
}
} catch (IOException e) {
e.printStackTrace();
}
//判断文件是否存在、并且有内容
if (file.exists() && !(file.exists() && file.length() == 0)) {
String str = null;
try {
ArrayList<String> list = new ArrayList<>();
//BufferedReader是可以按行读取文件
FileInputStream inputStream = new FileInputStream(filePath);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
while ((str = bufferedReader.readLine()) != null) {
//如果有空格、去掉空格
if (str.contains(" ")) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
str = m.replaceAll("");
}
//如果不是空串、添加到list、然后提交
if (!str.equals("")) {
list.add(str);
}
}
bufferedReader.close();
inputStream.close();
//删除第一行、、写回到文本
list.remove(0);
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
BufferedWriter bw = new BufferedWriter(outputStreamWriter);
if (list.size() != 0)
for (int i = 0; i < list.size(); i++) {
String string = list.get(i);
bw.write(string);
bw.newLine();
}
else if (list.size() == 0) {
bw.write("");
}
bw.flush();
bw.close();
//file.delete();
} catch (Exception e) {
e.printStackTrace();
}
} else {
break;
}
}
}
}
File-实现每读取一行输出当前行,并删除这一行
于 2023-04-07 22:07:20 首次发布