Java:如何扫描 ide 输出中的最高数字?

Posted

技术标签:

【中文标题】Java:如何扫描 ide 输出中的最高数字?【英文标题】:Java: How to scan ide output for the highest number? 【发布时间】:2017-03-01 13:43:52 【问题描述】:

所以我有这段代码,它打印出从任务管理器到 netbeans 中的 ide 的运行进程,但我想扫描进程的输出,以便我可以列出当时我的 PC 上运行最高的进程?

public static void main(String[] args) throws IOException 
  try 
   String tasklist;
   Process p = Runtime.getRuntime().exec
    (System.getenv("windir") +"\\system32\\"+"tasklist.exe");
    try (BufferedReader input = new BufferedReader(new   InputStreamReader(p.getInputStream()))) 
      while ((tasklist = input.readLine()) != null) 
      System.out.println(tasklist); //<-- Parse data here.
  

 catch (IOException err) 
  err.printStackTrace();
 

例如,这给了我以下输出,如果我想杀死 netbeans,因为它运行超过 500,000k,我该怎么做?

Image Name                     PID Session Name        Session    Mem Usage

chrome.exe                    3464 Console                    3    159,672 K
netbeans64.exe                3664 Console                    3    592,216 K
chrome.exe                    3808 Console                    3    384,556 K
java.exe                      2040 Console                    3     36,732 K
tasklist.exe                  2208 Console                    3      6,196 K

【问题讨论】:

好吧,如果你在 inside netbeans 运行这个,你最好不要杀死它,否则你将无法再看到列表......无论如何,在您的程序中,您有 tasklist 行。将其解析为有意义的数据,将其放入对象列表中,对其进行排序,然后对排序后的列表执行任何您需要的操作。 并提示:请随时通过 cmets 对我的答案提供反馈。最近几天我经常看到一些新手提出问题......并且永远不会回来。不评论,不赞成,不接受。所以,请考虑提供某种形式的反馈 ;-) 例如,现在您已经获得了支持代表,您可以支持...并发表评论 ;-) 【参考方案1】:

您迭代该数据;并收集您感兴趣的那些属性;例如名称、PID,当然还有内存使用情况。

你可能会创建一个类似的类

public class RunningProcessInfo 
  private final String name ...

  public RunningProcessInfo(String name, int pid, int memUsage) 

换句话说:您编写的解析代码将一行作为

chrome.exe 3464 控制台 3 159,672 K

把它变成

new RunningProcessInfo("chrome.exe", 3464, 159672)

(通过解析字符串输入;并将像“3464”这样的字符串转换为数字,等等)。

意思:你把System.out.println(tasklist);换成类似的东西

processInfos.add( parseLine(tasklist) );

processInfos 是一些 ArrayList&lt;RunningProcessInfo&gt;parseLine() 是采用单行并获取数据以构建新的 RunningProcessInfo 对象的方法。

您将这些对象收集到一个列表中。然后您迭代该列表以查找满足特定条件的所有对象。

最后,您使用另一个进程构建器发送命令来杀死您打算杀死的那些 PID(有关如何执行此操作的示例,请参阅here)。当然,您要注意 - 因为您肯定不想在该会话运行您的程序时终止您的 netbeans 会话...

【讨论】:

感谢您的帮助和快速响应!您对迭代我的数据以收集属性有什么建议吗? 我增强了关于“循环”部分的答案(因为它已经存在)。解析,你可以在这里得到想法 ***.com/questions/11871520/… (你可以使用扫描仪;只是不在 System.in 中;而是在你的文件中)或者你使用标记器:***.com/questions/691184/… ... 很多选项;由你决定。所以,请退后一步,先消化一下;当你有一个非常具体的问题时......写一个新的。

以上是关于Java:如何扫描 ide 输出中的最高数字?的主要内容,如果未能解决你的问题,请参考以下文章

java如何在字符串编码范围内输出频率最高的字符?

SQL - 如何找到列中的最高数字?

如何在 14x14 numpy 矩阵中找到 10 个最高数字的索引? [复制]

java中如何控制输出数字位数

java面试之位运算(如何不通过第三方变量交换两个数字,效率最高的乘法运算)

我想用java设计一个条形码扫描器,将扫描的数字在数据库中查找详细信息,请问如何实现?解决有+