一、我的dos命令行为:
Rscript test3.R >> c:\t.txt 2 >$1
意思是:将test3.R脚本运行的输出流和错误流,全部重定向到t.txt文件中。。。
这个' >> '表示追加(也可以用' > ',表示覆盖)。
最后一个 2>$1 意思是:将输出(stdout)和输出错误(stderr)一起放在t.txt中。
二、看一个实例:
import java.io.File;
public class Testr{
public static void main(String args[]){
try{
Process process =Runtime.getRuntime().exec("Rscript ./R/test3.R > ./log/test.txt 2>&1",null,newFile("C:\\MLS_HOME"));
process.waitFor();
}catch(Exception e){
e.printStackTrace();System.out.println("wrong");
}
System.out.println("its ok!");
}
}
在java中调用了dos中的R脚本运行,而且将输出信息重定向到test.txt中,这个new File()可以用来提供运行R脚本和输出日志log的相对路径。如果最后一个参数new File()为null,则你必须保证R脚本和日志的地址是一个绝对路径!(或者dos的执行路径被切换为你需要的路径中,这时写相对路径就没错了。)
本例的决定路径为:
C:\MLS_HOME:\R\test3.R
C:\MLS_HOME:\log\test.txt