java - 有没有办法将从一个进程对象的 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[] 作为参数。感谢您提前提供任何帮助。
解决方案
我认为您在这种情况下混淆了InputStream
and 。OutputStream
将它们视为代码的输入/输出。据我了解,您想获取in
阅读器中的内容并将其输出到out
. 我不明白你为什么需要使用getOutputStream
of Process
。
从 Java 9 开始,有一个非常简单的解决方案,transferTo
即Reader
. 实际上,您可以在Process
初始化后将所有内容替换为以下内容:
process.getInputStream().transferTo(new FileOutputStream(input[3]))
推荐阅读
- angular - 在 Angular 中使用路由管理数据的问题
- laravel - 无法在 get 方法上序列化或反序列化 PDO 实例
- ruby-on-rails - StandardError:发生错误,所有后续迁移都取消:Rails migration error for remove Foreign keys
- php - Wordpress 如何为购买的主题添加自定义功能
- c# - 限制文本文件删除
- mysql - Xampp 打开 MariaDB 而不是 MySQL
- python - pil(枕头)图像中的通道数
- sockets - 使用 Linux c 套接字捕获 Beacon 帧
- angular - Angular Service Worker 在 Safari 中崩溃
- scala - spark scala中多个文件的同时操作