有没有办法将从进程对象的 getOutPutStream() 方法获得的输出保存到文件中
Is there a way to save the obtained output from a a process object's getOutPutStream() method into a file
来自这个link“”并进行研究我没有找到一种方法来指定从 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 运行 一个连接两个文件结果的进程,现在我想将结果保存在一个新文件中。但是我找不到如何,因为进程中的 getOutPutStream 对象只有一种方法,使用以 int[] 作为参数的构造函数编写。提前感谢您的帮助。
我认为您混淆了这种情况下的 InputStream
和 OutputStream
。将它们视为代码的 input/output 。据我了解,您想获取 in
reader 中的内容并将其输出到 out
。我不明白你为什么需要使用 Process
的 getOutputStream
。
从Java9开始,有一个很简单的解决方法,即Reader
的transferTo
方法。实际上,您可以在 Process
初始化后用以下内容替换所有内容:
process.getInputStream().transferTo(new FileOutputStream(input[3]))
来自这个link“
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 运行 一个连接两个文件结果的进程,现在我想将结果保存在一个新文件中。但是我找不到如何,因为进程中的 getOutPutStream 对象只有一种方法,使用以 int[] 作为参数的构造函数编写。提前感谢您的帮助。
我认为您混淆了这种情况下的 InputStream
和 OutputStream
。将它们视为代码的 input/output 。据我了解,您想获取 in
reader 中的内容并将其输出到 out
。我不明白你为什么需要使用 Process
的 getOutputStream
。
从Java9开始,有一个很简单的解决方法,即Reader
的transferTo
方法。实际上,您可以在 Process
初始化后用以下内容替换所有内容:
process.getInputStream().transferTo(new FileOutputStream(input[3]))