Java中如何在文件中查找指定关键字

答案:使用BufferedReader逐行读取适合大文件,通过String.contains()匹配关键字;Files.readAllLines适用于小文件,一次性加载并遍历查找。

Java中如何在文件中查找指定关键字

Java中查找文件中的指定关键字,可以通过读取文件内容并逐行或整体匹配目标字符串来实现。下面介绍几种常用方法,适用于不同场景。

使用BufferedReader逐行读取查找

适合处理大文件,避免一次性加载全部内容到内存。

基本思路:使用BufferedReader读取文件每一行,用String.contains()判断是否包含关键字。

示例代码:

立即学习Java免费学习笔记(深入)”;

 import java.io.*; import java.nio.file.*;  public class KeywordSearch {     public static void searchInFile(String filePath, String keyword) {         try (BufferedReader reader = Files.newBufferedReader(Paths.get(filePath))) {             String line;             int lineNumber = 0;             while ((line = reader.readLine()) != null) {                 lineNumber++;                 if (line.contains(keyword)) {                     System.out.println("第 " + lineNumber + " 行: " + line.trim());                 }             }         } catch (IOException e) {             System.err.println("读取文件出错:" + e.getMessage());         }     }      public static void main(String[] args) {         searchInFile("data.txt", "Java");     } } 

使用Files.readAllLines一次性读取

适合小文件,代码简洁。

Java中如何在文件中查找指定关键字

百度文心百中

百度大模型语义搜索体验中心

Java中如何在文件中查找指定关键字 22

查看详情 Java中如何在文件中查找指定关键字

将整个文件读入内存,然后遍历每一行进行匹配。

 import java.nio.file.*; import java.util.List;  public class SimpleSearch {     public static void search(String filePath, String keyword) {         try {             List<String> lines = Files.readAllLines(Paths.get(filePath));             for (int i = 0; i < lines.size(); i++) {                 if (lines.get(i).contains(keyword)) {                     System.out.println("找到于第 " + (i + 1) + " 行: " + lines.get(i));                 }             }         } catch (IOException e) {             System.err.println("文件读取失败:" + e.getMessage());         }     } } 

支持正则表达式和忽略大小写

如果需要更灵活的匹配(如忽略大小写、模糊匹配),可以使用正则表达式

示例:忽略大小写查找

 // 在判断条件中使用正则 if (line.toLowerCase().contains(keyword.toLowerCase())) {     // 匹配成功 } 

或使用Pattern类进行复杂匹配:

 import java.util.regex.*;  Pattern pattern = Pattern.compile(Pattern.quote(keyword), Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(line); if (matcher.find()) {     System.out.println("匹配到: " + line); } 

基本上就这些。根据文件大小选择合适的方法,小文件用readAllLines更方便,大文件建议用BufferedReader逐行处理,避免内存溢出。同时注意异常处理和路径正确性。不复杂但容易忽略细节。

暂无评论

发送评论 编辑评论


				
上一篇
下一篇
text=ZqhQzanResources