簡體   English   中英

從終端運行代碼時會創建文本文件,但在Java中運行時不會創建文本文件

[英]Text file is created when running code from the terminal, but not when running it in Java

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是輸入文件。 使用模型中srcmoses.ini中的exe moses.ini ,可以轉換dataset.en中的內容並將其保存在out.txt 但是在這里運行此代碼時,不會創建out.txt 我從命令中刪除了將輸出保存到文件中的方法,盡管控制台中什么也沒有顯示。 如果我更改Process p = Runtime.getRuntime().exec(ls)其工作正常。

Shell可以解釋重定向和參數。 您應該嘗試

String [] cmd = {“ / bin / ksh”,“ -c”,“您的命令<infile”};

流程= Runtime.getRuntime()。exec(cmd);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM