怎么得到Java调用外部程序后返回的结果

比如调用CMD程序的dir命令后,怎么得到文件夹下面文件和文件夹名字

简单方法:使用<命令> > <文件>调用,把返回输出到文件中,再打开该文件即可

这个可以使用Java的ProcessBuilder类来实现
下面是示例代码,你可以参照下

try {
    //使用ProcessBuilder类创建一个进程来执行CMD命令
    ProcessBuilder processBuilder = new ProcessBuilder("cmd.exe", "/c", "dir");
  //设置redirectErrorStream(true),将标准错误流与标准输出流合并,以便通过输入流读取输出结果
    processBuilder.redirectErrorStream(true);
    Process process = processBuilder.start();
    
    BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String line;
    while ((line = reader.readLine()) != null) {
        // 处理输出的每一行数据,提取文件和文件夹名字
        System.out.println(line);
    }
    
    process.waitFor();
    process.destroy();
} catch (IOException | InterruptedException e) {
    e.printStackTrace();
}

具体关于ProcessBuilder类的使用,你可以到网上搜下方法

【以下回答由 GPT 生成】

可以使用Java的Process类来实现调用外部程序并获取返回结果。下面是一种可能的解决方案:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class ExternalProgram {
    public static void main(String[] args) {
        try {
            // 调用CMD程序并执行dir命令
            Process process = Runtime.getRuntime().exec("cmd /c dir");

            // 获取CMD程序的输出流
            InputStream inputStream = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

            // 读取输出流中的内容
            String line;
            while ((line = reader.readLine()) != null) {
                // 处理每一行的数据,这里只是简单地将内容打印出来
                System.out.println(line);
            }

            // 关闭资源
            reader.close();
            inputStream.close();

            // 等待CMD程序执行完毕
            process.waitFor();

            // 获取CMD程序的返回码
            int exitValue = process.exitValue();
            System.out.println("CMD程序的返回码: " + exitValue);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

这段代码会调用CMD程序并执行dir命令,并将CMD程序的输出结果打印出来。同时,获取CMD程序执行完毕后的返回码。

请注意,由于CMD程序的输出结果可能较大,建议使用缓冲读取流(BufferedReader)来读取输出流的内容,以避免内存溢出。同时,还需要注意关闭相应的资源,以及处理可能出现的异常。

如果你想获取更详细的返回结果,比如每个文件和文件夹的名称,可以根据具体情况进行解析处理。以上只是一个简单的示例,具体需求可以根据实际情况进行修改和扩展。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^