Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java process builder redirect.appendTo(日志)_Java_Processbuilder - Fatal编程技术网

java process builder redirect.appendTo(日志)

java process builder redirect.appendTo(日志),java,processbuilder,Java,Processbuilder,使用java process builder是否可以用重定向选项替换输出文件的内容 代码: 我希望用命令的输出替换log2的内容。但是,我不确定这是否可行,因为process builder工作目录也与输出文件log2相同 在排序中,process builder需要读取文件,对内容进行排序,然后将其写回,替换未排序的内容。目前它对内容进行排序,但在将其写回log2文件时,它只是将输出放在文件的底部,实际上是将log2的内容加倍,而不是将其覆盖。不要appendTo,只需使用。问题是,您将在读取

使用java process builder是否可以用重定向选项替换输出文件的内容

代码:

我希望用命令的输出替换
log2
的内容。但是,我不确定这是否可行,因为process builder工作目录也与输出文件
log2
相同


在排序中,process builder需要读取文件,对内容进行排序,然后将其写回,替换未排序的内容。目前它对内容进行排序,但在将其写回
log2
文件时,它只是将输出放在文件的底部,实际上是将
log2
的内容加倍,而不是将其覆盖。

不要
appendTo
,只需使用。问题是,您将在读取文件时覆盖该文件-您将遇到问题。通常会写入
tmp
文件,然后在成功读取输入文件后替换原始文件。在编写问题之前,我尝试使用“to”,但根本没有得到任何输出。不过,我接受了你的建议,在回写之前用“to”写了一个临时文件,现在一切都正常了。谢谢你为什么这样分类?您可以阅读它,用Java中的Collections.sort()进行排序,然后写回?对于一个非常简单的问题,这是一个非常复杂的解决方案,因此也是一个反模式。
 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();