java - java中如何从txt文件中获取特定行

标签 java

我正在将有关我的电脑上运行的所有进程的信息转储到 .txt 文件中。为此,我从 java 应用程序执行 handle.exe。该文件包含以下格式的所有正在运行的进程:

RuntimeBroker.exe pid: 4756 
4: Key           HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image 
8: Event  
   10: WaitCompletionPacket 
   1C: IRTimer       
   20: WaitCompletionPacket 
   24: IRTimer       
   28: File          \Device\CNG

--

SearchIndexer.exe pid: 5616 
4: Event         
8: WaitCompletionPacket 
C: IoCompletion  
1C: IRTimer
20: File          \Device\0000007s
22: Directory   

我需要获取正在使用给定设备的进程的名称,即如果我循环遍历文件搜索字符串“\Device\0000007s”,我需要获取进程的名称和进程id 就是上面几行。有谁知道我该怎么做?这些进程在文件中由一行破折号分隔。请记住,该文件很大,这只是一个示例。

最佳答案

我会将进程的每一行(使用 Scanner )读入 List<String> 中。然后搜索List<String>为您想要的String如果存在,请进行处理。这是一些伪代码:

Scanner scanner = new Scanner("path/to/file.txt");
List<String> stringList;
while(scanner.hasNextLine()) {
  String nextLine = scanner.nextLine();

  if(nextLine.equals("--") {
    for(String line : stringList) {
      if(line.contains("\Device\0000007s") {
        // Do your processsing here
      }
    }

    stringList.clear();
  }

  else {
    stringList.add(nextLine);
  }

}

这只是伪代码,不处理最后一个进程的边缘情况,并且可能无法编译。我将把具体的语法留给你。

可能有一种更优化的方法可以减少循环。但对于像这样的简单事情,我更喜欢一种清晰的方法而不是优化的方法。

关于java - java中如何从txt文件中获取特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40094451/

相关文章:

java - 输出文本文件中最长的单词

java - 两个 Eclipse 项目在构建路径中相互包含

java - 如何在 JTextArea 中格式化文本

java 8 Collector<String, A, R> 不是函数式接口(interface),谁能告诉我为什么?

java - Spring Boot 忽略@JsonDeserialize 和@JsonSerialize

java - Treeset.contains() 问题

java - Spring Boot 属性迁移器

java - 如何从静态上下文初始化重绘计时器?

java - 如何以编程方式为特定实体字段添加属性转换器?

java - 在 iText 中合并两个模板