首页 > 解决方案 > 有没有办法将从一个进程对象的 getOutPutStream() 方法获得的输出保存到一个文件中

问题描述

来自此链接“将 Java Process/ProcessBuilder 的 OutputStream 作为管道写入”并研究我没有找到一种方法来指定从 getOutputStream() 写入进程输出的路径。

BufferedReader br = new BufferedReader(new FileReader(new File("commands.txt")));
        String[] input = br.readLine().split(" ");

        String cmd =  input[0] + " " + input[1] + " " + input[3];

        System.out.println(cmd);

        Process process = Runtime.getRuntime().exec(new String[]{"bash","-c", cmd});


        BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));

        OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(input[3]));

        byte[] buf = new byte[1024];
        int len;

        while ( (len = in.read()) > 0) {
            // out.write();
        }

在代码中,exec 运行一个将两个文件的结果连接起来的进程,现在我想将结果保存在一个新文件中。但是我找不到方法,因为来自 process 的 getOutPutStream 对象只有一种方法 write 与构造函数,该构造函数将 int[] 作为参数。感谢您提前提供任何帮助。

标签: javaprocessfileoutputstream

解决方案


我认为您在这种情况下混淆了InputStreamand 。OutputStream将它们视为代码的输入/输出。据我了解,您想获取in阅读器中的内容并将其输出到out. 我不明白你为什么需要使用getOutputStreamof Process

从 Java 9 开始,有一个非常简单的解决方案,transferToReader. 实际上,您可以在Process初始化后将所有内容替换为以下内容:

process.getInputStream().transferTo(new FileOutputStream(input[3]))


推荐阅读