関数でコマンドを使用しながら、端末からの応答を読み取ろうとしていProcess()
ます。私は他の例を見てきましたが、それを機能させることができません。たとえば、データを処理してプログレスバーを使用したくないので、ターミナルに表示されたときにデータにアクセスする必要があります。私のコードでは、 textArea を使用して、今のところ機能するかどうかを確認しています。Eclipse でコンソールにデータを表示できますが、textArea には何も表示されません。私は何を間違っていますか?
public void unPack(String filePath, String directory)
{
ProcessBuilder pb = new ProcessBuilder("/usr/local/bin/unrar", "x", "-y",filePath);
pb.inheritIO();
pb.directory(new File(directory));
try
{
final Process p = pb.start();
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
textArea.setText(line);
}
try
{
int exitVal = p.waitFor();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
自分でコマンドを実行したときの Mac ターミナルの応答は次のとおりです。
UNRAR 4.20 freeware Copyright (c) 1993-2012 Alexander Roshal
Extracting from testrar.part1.rar
Extracting testfile.mkv 23%
Extracting from testrar.part2.rar
... testfile.mkv 46%
Extracting from testrar.part3.rar
... testfile.mkv 70%
Extracting from testrar.part4.rar
... testfile.mkv 93%
Extracting from testrar.part5.rar
... testfile.mkv OK
All OK