如何在Java中运行CMD

Luk*_*zel 1 java cmd

我是Java的新手,我需要在Java中运行CMD或Powershell,因为我想了解当前的RAM利用率和当前的磁盘分配。StackOverflow上有很多类似的问题,但我不明白。

这是我的代码,我从这里得到的:

package test;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) {
    }

    public static class CmdTest {
        public static void main(String[] args) throws Exception {
            ProcessBuilder builder = new ProcessBuilder(
                    "cmd.exe", "/c", "cd \"C:\\Program Files\\Microsoft SQL Server\" && dir");
            builder.redirectErrorStream(true);
            Process p = builder.start();
            BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line;
            while (true) {
                line = r.readLine();
                if (line == null) {
                    break;
                }
                System.out.println(line);
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我只有一个空控制台,不知道为什么。

Gho*_*ica 5

这里:

public static void main(String[] args) {
}
Run Code Online (Sandbox Code Playgroud)

您的Main类的main方法为空,什么也不做。

然后,您添加了另一个Main 内部类,名为CmdTest。但是该类及其主要类从未被调用过。

我的建议是,只需删除CmdTest类,然后将其代码放入现有的Main.main()中:

public class Main {
  public static void main(String[] args) throws Exception {
    ProcessBuilder builder = new ProcessBuilder(...
Run Code Online (Sandbox Code Playgroud)

您还可以将Main.java重命名为CmdTest.java,并(基本上)删除旧的Main,并将您的CmdTest用作其自己的公共顶级类。

仅作记录:格式化很重要。我花了2分钟才弄清楚您的问题。为什么?由于格式误导。如果您进行了适当的缩进,那么根本的问题将在5秒钟内显而易见。因此:即使块/方法为空,也要始终一致地缩进,并将}放在新行上!

最后:考虑到OP的自我回答以及更多的语法实验,这里的真正答案是:退后一步。例如看这个,以了解正确的类+ main必须是什么样子。了解细节,然后开始插入自己的代码。