首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Java运行外部程序,读取输出,允许中断

从Java运行外部程序,读取输出,允许中断。

为了实现这个功能,您可以使用ProcessBuilderBufferedReader类。ProcessBuilder用于创建和配置外部进程,BufferedReader用于读取输出。

以下是一个示例代码:

代码语言:java
复制
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class RunExternalProgram {
    public static void main(String[] args) throws Exception {
        ProcessBuilder processBuilder = new ProcessBuilder("your-command", "your-arguments");
        processBuilder.redirectErrorStream(true);

        Process process = processBuilder.start();

        ExecutorService executorService = Executors.newSingleThreadExecutor();
        Future<String> future = executorService.submit(() -> {
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
                StringBuilder stringBuilder = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    stringBuilder.append(line);
                    stringBuilder.append(System.lineSeparator());
                }
                return stringBuilder.toString();
            }
        });

        // 如果需要中断,可以调用 process.destroy()
        // process.destroy();

        String output = future.get();
        System.out.println("Output: " + output);

        int exitCode = process.waitFor();
        System.out.println("Exit code: " + exitCode);
    }
}

在这个示例中,我们使用ProcessBuilder创建一个新的进程,并使用BufferedReader从进程的输出流中读取数据。我们使用ExecutorServiceFuture来异步执行读取任务,以便在需要时可以中断。

如果您需要中断进程,只需调用process.destroy()即可。

请注意,这个示例代码仅用于演示目的,实际使用时可能需要根据您的需求进行修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券