2011-06-24 13 views
1

Javaプログラムを使用してOracle EXPコマンドを実行し、コマンド出力のどこかを出力する必要があります。Java読み取りOracle EXPコマンド出力

EXPコマンドが正しいですが、Javaコードを実行するとダンプファイルが正しく作成されますが、出力を得るためにいくつかの問題が発生しています。

これは私が出力を読み取るために使用しているものと非常に類似したスニペットは次のとおりです。

String line; 
String output = ""; 
try { 
    Process p = Runtime.getRuntime().exec(myCommand); 
    BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    while ((line = input.readLine()) != null) { 
     output += (line + '\n'); 
    } 
    input.close(); 
} 
catch (Exception ex) { 
    ex.printStackTrace(); 
} 
System.out.println(output); 

私が言ったように、コマンドが正しく実行される(生成されたダンプファイルで検証)が、何も表示されません私のコンソールと私のJavaプログラムのいずれかで終了しません。

"exp ..."の代わりに "ls -l"という別のコマンドを使用すると、同じコードが完全に機能します。

答えて

1

p.getErrorStream()を使用してみてください、それはエラーストリームバッファがいっぱいになったので、プログラムの開発の実行をブロックしていることかもしれません。

エラーストリームを読み取るか、ProcessBuilderクラスを使用して、エラーストリームをstdout(すでに読み込んでいる)にリダイレクトするかどうかを試してみてください。

3

おそらく、標準出力ではなく、エラー出力に書き込んでいる可能性があります。

はa_horse_with_no_nameが言ったように代わりgetInputStream()

関連する問題