是否可以使用带有java进程构建器的重定向选项替换输出文件的内容?
代码:
ProcessBuilder pb2 =
new ProcessBuilder("/bin/sh", "-c", "cat /home/james/YCSB/bin/simulations/"+CommandGenerator.Simulation_id+".dat | sort -n");
File log2 = new File("/home/james/YCSB/bin/simulations/"+CommandGenerator.Simulation_id+".dat");
pb2.redirectOutput(Redirect.appendTo(log2));
pb2.redirectErrorStream(true);
assert pb2.redirectOutput().file() == log2;
Process p2 = pb2.start();
我希望用命令的输出替换log2
的内容。我不确定这是否可行,因为进程构建器工作目录也与输出文件log2
相同。
在排序中,我的流程构建器需要读取文件,对内容进行排序,然后将其写回,替换未排序的内容。目前它对内容进行排序,但是当将其写回log2
文件时,它只是将输出放在文件的底部,有效地将log2
的内容加倍,而不是覆盖它