2015-09-07 160 views
1

要在終端excecute SENNA我用命令:Java的輸入輸出重定向流

senna.exe <input.txt> result.txt 

現在我想在Java程序來實現這一點。這是到目前爲止我的代碼

ProcessBuilder builder = new ProcessBuilder("senna.exe"); 
builder.redirectErrorStream(true); 
Process process = builder.start(); 
OutputStream stdin = process.getOutputStream(); 
InputStream stdout = process.getInputStream(); 

BufferedReader reader = new BufferedReader (new InputStreamReader(stdout)); 
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin)); 

writer.write("This is a test sentence");; 
writer.flush(); 
String line; 
while ((line = reader.readLine()) != null) { 
    System.out.println ("Stdout: " + line); 
} 

重定向我使用的代碼從this thread的輸入,輸出和錯誤流。問題是我收到以下錯誤消息:

FATAL ERROR: unable to open file hash/words.lst

我做錯了什麼?

回答

0

從您給出的例子中可以看出,您正在調整this thread的Linux代碼以使用senna.exe在Windows上運行。

從你得到的錯誤看來,你忘了將Linux的正斜槓(/)改爲Windows的反斜槓(\)。

嘗試將您的文件路徑的正斜槓更改爲反斜槓。

+0

我檢查了th文件​​路徑,但它不是錯誤消息的原因。 – MK14

0

據我所見,您還沒有設置ProcessBuilder對象的目錄路徑。這個錯誤似乎是因爲在senna文件夾中有一個名爲'hash'的文件夾無法到達。

請試試這個: builder.directory(new File(「/ yourpathtosenna/senna /」)); (我在一臺linux機器上)

你的錯誤應該很可能會改變,但我不知道你是否會得到輸出,因爲我現在也在Linux機器上通過Java交互式地運行番茄。

祝你好運,並做更新,如果你成功了!