首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本文件是在终端运行代码时创建的,而不是在Java中运行时创建的

文本文件是在终端运行代码时创建的,而不是在Java中运行时创建的
EN

Stack Overflow用户
提问于 2012-05-21 18:02:09
回答 1查看 186关注 0票数 1
代码语言:javascript
复制
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) {
    // ...
  }
}

该命令

代码语言:javascript
复制
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),它就能正常工作。

EN

回答 1

Stack Overflow用户

发布于 2012-05-22 00:02:00

Shell可以解释重定向和参数。相反,您应该尝试

String[]命令= {"/bin/ksh","-c","yourcommand < infile"};

进程进程= Runtime.getRuntime().exec(cmd);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10683178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档