Erro ao tentar ler um arquivo gerado do comando Runtime.getRuntime().exec(cmd)

Bom dia galera,

mermão estou passando por algo muito intrigante…

o código abaixo, se eu rodar ele via debbug, ele funciona na boa, sem problema nenhum. Porém, se eu der um execute direto, ele dar erro. Só me expliquem porque.


public class UploadUtil {


	public static void main(String args[]) {

		SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");

		String data = formatador.format(new Date());

		data = data.replace("/", "");

	String comando = "cmd.exe /c mysqldump -uroot -proot -t -c --skip-extended-insert  test usuario > c:\\backup_"
				+ data + ".sql";

		File arquivo = new File("c:\\backup_" + data + ".sql");

		try {

			Runtime.getRuntime().exec(comando);

			File file = new File("c:\\backup_2_" + data + ".sql");

			FileWriter writer = new FileWriter(file, true);

			PrintWriter saida = new PrintWriter(writer, true);

			saida.println("USE test;");

			String linha = "";

			if (arquivo.exists()) {

				FileReader reader = new FileReader(arquivo);

				BufferedReader in = new BufferedReader(reader);

				while (in.ready()) {
					linha = in.readLine();

					saida.println(linha);

				}
				in.close();

			}

			saida.close();
			writer.close();


Bom, e onde ocorre o erro? É simples, ele diz que o arquivo que eu estou tentando ler no BufferReader, não existe.

Mas como é que pode, se eu já executo o runtime antes dele tentar ler, e no meu pc já é gerado o arquivo e tudo. Dae ele da erro.

porém se eu debbugar esse código, ele funciona na limpeza… que viagem,

alguém pode me explicar ???

Por que quando você roda em modo debug, provavelmente dá tempo do seu programa terminar sua execução. Sem o debug, os comandos ocorrem tão rápido que, ao tentar acessar o arquivo, ele ainda estará bloqueado pelo programa.

Tente acrescentar um waitFor() para seu processo:

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

Show de bola Viny,

mano não tenho como testar agora, mas quando for a noite, eu irei verificar isso e dou um retorno aqui no fórum.

Agradeço a ajuda.

Abraços.