
本文介绍如何使用 Java 从文本文件中提取指定范围的行,特别是提取 procedure 和 end. 之间的内容。通过使用 BufferedReader 读取文件,并利用标志位来控制行的添加,可以高效地实现此功能。本文提供了详细的代码示例和解释,帮助开发者快速掌握该技巧。
在处理文本文件时,经常需要提取特定范围内的内容。例如,从配置文件中提取某个代码块,或者从日志文件中提取特定时间段内的日志。本文将演示如何使用 Java 从文本文件中提取以 procedure 开头到以 end. 开头的行之间的内容。
核心思路是使用 BufferedReader 逐行读取文件内容,并使用一个布尔变量 rememberStuff 来标记是否需要记录当前行。当遇到以 procedure 开头的行时,将 rememberStuff 设置为 true,表示开始记录。当遇到以 end. 开头的行时,将 rememberStuff 设置为 false,表示结束记录。只有当 rememberStuff 为 true 时,才将当前行添加到结果字符串中。
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class ExtractLines {
public static void main(String[] args) {
Path file = Paths.get("file.txt"); // 替换为你的文件名
final StringBuilder sb = new StringBuilder();
try (final BufferedReader br = Files.newBufferedReader(file, StandardCharsets.UTF_8)) {
String line;
boolean rememberStuff = false;
while ((line = br.readLine()) != null) {
if (line.startsWith("procedure ")) {
rememberStuff = true;
} else if (line.startsWith("end.")) {
rememberStuff = false;
} else if (rememberStuff) {
sb.append(line).append('\n');
}
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Lines found between procedure and end:");
System.out.println(sb);
}
}代码解释:
本文介绍了如何使用 Java 从文本文件中提取指定范围的行。通过使用 BufferedReader 逐行读取文件内容,并使用标志位来控制行的添加,可以高效地实现此功能。该方法可以应用于各种文本处理场景,例如提取配置文件中的特定代码块、从日志文件中提取特定时间段内的日志等。通过理解和掌握本文介绍的方法,可以更加灵活地处理文本文件。
以上就是从文件中提取指定范围的行的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号