如果读取到字符串[INTRO]时,之后的读取内容方式改为两行读取内容,内容不能为空格和换行,一直按两行读取读取到当字符串为优待政策
时间: 2024-03-20 16:42:31 浏览: 70
好的,以下是修改后的Java代码实现:
```java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class ReadTxtFile {
public static void main(String[] args) {
// 读取的文件路径
String filePath = "C:\\test\\";
// 读取的文件名
String fileName = "example.txt";
try {
// 创建文件对象
File file = new File(filePath + fileName);
// 创建字符读取流
FileReader fileReader = new FileReader(file);
// 创建缓冲读取流
BufferedReader bufferedReader = new BufferedReader(fileReader);
// 读取文件中的每一行
String line = bufferedReader.readLine();
boolean isIntro = false; // 标记是否进入INTRO部分
while (line != null) {
if (line.equals("[INTRO]")) { // 如果读取到INTRO
isIntro = true; // 进入INTRO部分
line = bufferedReader.readLine(); // 继续读取下一行
} else if (isIntro && !line.trim().isEmpty()) { // 如果进入了INTRO部分,且读取到的内容不为空格和换行
String cleanLine1 = line.replaceAll("\\s+", ""); // 清除空格和换行
String cleanLine2 = bufferedReader.readLine().replaceAll("\\s+", ""); // 读取下一行并清除空格和换行
System.out.println(cleanLine1 + cleanLine2); // 输出组合后的内容
line = bufferedReader.readLine(); // 继续读取下一行
} else {
line = bufferedReader.readLine(); // 继续读取下一行
}
if (line != null && line.equals("优待政策")) { // 如果读取到优待政策
isIntro = false; // 退出INTRO部分
}
}
// 关闭流
bufferedReader.close();
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
解释一下代码:
1. 首先设置了文件路径和文件名;
2. 使用`FileReader`和`BufferedReader`创建字符读取流和缓冲读取流;
3. 读取文件中的每一行,如果读取到字符串`[INTRO]`,则进入INTRO部分,标记为`true`,并读取下一行;
4. 如果在INTRO部分中读取到的内容不为空格和换行,则读取下一行并清除空格和换行,输出组合后的内容,再继续读取下一行;
5. 如果读取到字符串`优待政策`,则退出INTRO部分,标记为`false`;
6. 如果既不是读取到字符串`[INTRO]`,也不是在INTRO部分中读取到内容,则直接继续读取下一行;
7. 直到文件读取完毕;
8. 关闭流。
希望能够帮到你!
阅读全文