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

时间:2016-10-17 19:46:09

标签: 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,上面几行。有谁知道我怎么能这样做?这些过程由一行破折号分隔 - 在文件中。请记住,文件很大,这只是一个例子。

1 个答案:

答案 0 :(得分:1)

我会将某个流程的每一行(使用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);
  }

}

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

这可能是一种更优化的方式,循环次数更少。但对于像这样的简单事情,我更倾向于采用一种明确的优化方法。