リモート マシン上でコマンドを実行するために、SSHJやJScHなどの Java API を使用しました。私は、 ExpectItやExpect4jなどの Java Expect APIについて調べました。しかし、出力をマシンから Java プロセスに 1 行ずつストリーミングする方法が見つかりませんでした。リモート マシンで巨大なファイルに対して grep を実行していて、コマンド全体が完了するのを待つのではなく、膨大な出力を 1 行ずつプロセスにストリーミングしたいとします。出来ますか ?もしそうなら、それを行う方法は?
2 に答える
0
出力ストリームをファイルに設定したら、これができることを願っています。以下のコードでは、出力ストリームがシステムの「outs.txt」ファイルに送信されます。いっぱいになっている間に、ファイルの内容の処理を開始する新しいスレッドを作成できます。以下のスニペットは、出力ストリームを設定する方法を示しています。このコード スニペットの後、「outs.txt」ファイルからの出力を処理するためにスレッドを開始する必要があります。ハッピーコーディング!!!
ss=new StringBuilder("grep aa.txt");
ss.append("\n");
FileWriter fw = new FileWriter("comm.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write(ss.toString());
bw.flush();
fw.close();
bw.close();
InputStream is=new FileInputStream("comm.txt");
OutputStream os=new FileOutputStream("outs.txt");
channel.setInputStream(is);
channel.setOutputStream(os);
Thread.sleep(1000);
channel.connect();
于 2017-04-01T16:56:53.147 に答える