Retorno backup com Firebird

1 resposta
J

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.

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);
}

1 Resposta

J

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.

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) {
}
Criado 12 de maio de 2009
Ultima resposta 12 de mai. de 2009
Respostas 1
Participantes 1