我需要将数据通过管道传输到另一个进程。数据是一个字符串数组,我将其连接成一个大字符串。外部进程接受文本文件。目前,我正在将字符串写入 ByteArrayOutputStream,但是有更好的方法吗?
public OutputStream generateBoxFile() throws IOException {
OutputStream boxStream = new ByteArrayOutputStream();
for (String boxLine : boxLines) {
boxLine += "\n";
boxStream.write(boxLine.getBytes(Charset.forName("UTF-8")));
}
return boxStream;
}
编辑:为了进一步说明,我正在启动一个名为 trainer
的程序,它接受一个文本文件。所以我会在 shell ./trainer textfile
中像这样调用这个程序。但是,我想在内存中完成所有操作,因此我正在寻找一种好方法将数据写入不在磁盘上的临时文件中,然后将其输入到训练器中。
最佳答案
将集合字符串写入文件的最简单方法是使用 PrintWriter
public static void writeToFile(String filename, Iterable<String> strings) {
try (PrintWriter pw = new PrintWriter(filename)) {
for(String str : strings)
pw.println(str);
}
}
如果您需要编写UTF-8,您可以使用以下命令更改编码
try (PrintWriter pw = new PrintWriter(
new OutputStreamWriter(new FileOutputStream(filename), "UTF-8")) {
关于java - 在 Java 中将信息传送到另一个进程的首选方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31074017/