Retorno backup com Firebird

E ai galera do GUJ, estou tentando pegar o retorno do gbak para mostrar em um JTextArea mas infelizmente não estou avançando. No código abaixo caso utilizado o comando ‘dir’, o processo ocorre como o esperado, porém ao executar o ‘gbak’ o sistema trava a execução retomando-a somente após fechar o frame onde está o código. Qualquer idéia sobre o tema é bem vinda, falow, obrigado.

[code]try {
//String comando = “cmd /c gbak -user sysdba -pas masterkey -b -v C:\tmp\x.gdb c:\tmp\bkp.gbk”;
String comando = “cmd /c dir “c:\arquivos de programas””;

String line = null;
					
Process p = Runtime.getRuntime().exec(comando);
BufferedReader retorno = new BufferedReader (new InputStreamReader(p.getInputStream()));

while ((line = retorno.readLine()) != null) {
	//jTextArea.append(line + "\n");
	System.out.println(line);
}

p.waitFor();
retorno.close();

}
catch(Exception e1) {
System.out.println(e1);
}[/code]

E ai gurizada, não matei a charada do jeito que quero mas ai vai uma solução temporária até encontrar a forma de alimentar o JTextArea durante o processo de backup. Um colega de trabalho me deu a dica de utilizar o parametro ‘-Y’ na linha de comando de backup para gravar o log do backup em um arquivo. Então estou gravando esse arquivo e ao final do processo leio-o e atualizo o JTextArea. Falow.

[code]try {
comando = "cmd /c gbak -user sysdba -pas masterkey -b -v " +
"C:\tmp\x.gdb c:\tmp\bkp.gbk " +
“-y c:\tmp\bkpLog.txt”;

Process p = Runtime.getRuntime().exec(comando);

p.waitFor();
					
String linha;
					
try {
	BufferedReader inputStream = new BufferedReader(new FileReader("c:\tmp\bkpLog.txt"));
						
	while ((linha = inputStream.readLine()) != null) {
		jTextArea.append(linha + "\n");
	}

	inputStream.close();
}
catch (Exception e1) {
}						

}
catch(Exception e1) {
}[/code]