public static void main(String[] args) throws Exception {
System.setOut(new PrintStream(
new FileOutputStream("/home/main/smt/output/out.txt")));
try {
String line;
Process p = Runtime.getRuntime().exec(
"/home/main/smt/tools/moses-2010-08-13/moses/moses-cmd/src/moses " +
"-f /home/main/smt/work/model/moses.ini " +
"< /home/main/smt/work/corpus/dataset.en" );
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()) );
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
}
catch (Exception e) {
// ...
}
}该命令
home/main/smt/tools/moses-2010-08-13/moses/moses-cmd/src/moses
-f /home/main/smt/work/model/moses.ini
< /home/main/smt/work/corpus/dataset.en
>/home/main/smt/output/out.txt在Linux终端中执行,并创建out.txt。但在java中,不会创建out.txt。
dataset.en是输入文件。使用src中的可执行文件摩西和模型中的moses.ini对dataset.en中的内容进行翻译并保存到out.txt中。但是在这里,当运行这段代码时,没有创建任何out.txt。我从命令中删除了将输出保存到文件中,即使控制台中没有显示任何内容。如果我改变Process p = Runtime.getRuntime().exec(ls),它就能正常工作。
发布于 2012-05-22 00:02:00
Shell可以解释重定向和参数。相反,您应该尝试
String[]命令= {"/bin/ksh","-c","yourcommand < infile"};
进程进程= Runtime.getRuntime().exec(cmd);
https://stackoverflow.com/questions/10683178
复制相似问题