4

データベースから取得したいくつかの引数の1 つを使用してプロセス Runtime.exec()を実行するために使用している Java クラスがあります。これらの引数の 1 つには、保持する必要がある改行文字が含まれていますが、改行文字は削除されます。を使用する場合は問題はありませんが、引数のリストの解析について心配する必要はありません。 cscriptStringRuntime.exec()ProcessBuilder

呼び出すときに改行を保持する方法はありexec()ますか?

誰かがそれを見たい場合に備えて、 への呼び出しの簡単な例を次に示しますexec()

Process proc = Runtime.getRuntime().exec("cscript test.vbs \"line1\r\nline2\"");

私のスクリプトは、改行がスペースに置き換えられた1つの引数として「line1 line2」を取得していました。

4

1 に答える 1

6

あなたの質問にはほとんど情報がありませんが、あなたの問題は次のようになっていると思います。

Runtime.exec(...)文字列コマンド引数を使用したの形式はStringTokenizer、実際のコマンドトークンを生成するためにを使用することになります。これは、改行文字の予期しない削除を説明する可能性があります。文字列コマンド引数の解析が行われないように、の形式を文字列配列コマンド引数Runtime.exec(...)とともに使用してみてください。

もちろん、そうすることで引数を自分で解析する必要があるかもしれませんが、それがプログラムが期待どおりに動作することを保証する唯一の方法かもしれません。

于 2012-09-12T17:11:57.580 に答える