我正在将有关我的电脑上运行的所有进程的信息转储到 .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/