Problema ao criar um arquivo

Estou tentando exportar o banco de dados porém não estou conseguindo
error:
Cannot run program “mysqldump”: CreateProcess error=2, O sistema não pode encontrar o arquivo especificado

classe que recebe os parametros:

public class test {
    public boolean backupDB(String dbName, String dbUserName, String dbPassword, String path) {
    	File file = new File(path);
    	file.mkdir();
        String executeCmd = "mysqldump -u " + dbUserName + "-p" + dbPassword + " --add-drop-database -B " + dbName + " -r " + file;
        Process runtimeProcess;
        try {

            runtimeProcess = Runtime.getRuntime().exec(executeCmd);
            int processComplete = runtimeProcess.waitFor();

            if (processComplete == 0) {
                System.out.println("sucess");
                return true;
            } else {
                System.out.println("fail");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return false;
    }
} 

o meu main;

	    test backup=new test();
        String caminho = System.getProperty("user.home");
	    boolean backupDB = backup.backupDB("teste", "root", "", "\"C:/mine/SQLBackup/teste.sql\"");
	    if(backupDB){
	    System.out.println("success");
	    }else{
	    System.out.println("fail");
	    }

Por que está passando o caminho “entre parênteses”?

Seu problema não está em criar um arquivo e sim em executar um programa a partir do Java.

Quando você quer executar um programa que aceita parâmetros, então você tem que utilizar o método exec que recebe um array de String como parâmetro.

Então você tem que trocar esta linha:

String executeCmd = "mysqldump -u " + dbUserName + "-p" + dbPassword + " --add-drop-database -B " + dbName + " -r " + file;

Por esta:

String[] executeCmd = new String[] {
    "mysqldump",
    "-u",
    dbUserName,
    "-p",
    dbPassword,
    "--add-drop-database",
    "-B",
    dbName,
    "-r",
    file.getAbsolutePath()
};

Outra coisa, se o programa não estiver na variável de ambiente PATH então você também precisa informar o diretório onde o programa se encontra, assim:

File pasta = new File("<a pasta onde o 'mysqldump' se encontra>");
runtimeProcess = Runtime.getRuntime().exec(executeCmd, null, pasta);
int processComplete = runtimeProcess.waitFor();
1 curtida

opa
vlw mano

como estou utilizando o xampp eu fiz isso:

    	File pasta = new File("C:\\xampp\\mysql\\bin");
    	runtimeProcess = Runtime.getRuntime().exec(executeCmd, null, pasta);
    	int processComplete = runtimeProcess.waitFor();

porém continuou com o mesmo error;

Cannot run program “mysqldump” (in directory “C:\xampp\mysql\bin”): CreateProcess error=2, O sistema não pode encontrar o arquivo especificado

Provavelmente esqueceu de por o nome completo do mysqldump
Dá uma olhada no conteúdo da pasta C:\xampp\mysql\bin.
O nome do arquivo deve ser mysqldump.exe, mysqldump.bat, mysqldump.cmd alguma coisa assim…

C:\xampp\mysql\bin\mysqldump.cmd
eu tentei com todos .exe .bat .cmd e todos deram o mesmo error

lá mostra como .exe / aplicativo o arquivo do mysqldump.

Então seu array de String tem que ser assim:

String[] executeCmd = new String[] {
    "mysqldump.exe",
    "-u",
    dbUserName,
    "-p",
    dbPassword,
    "--add-drop-database",
    "-B",
    dbName,
    "-r",
    file.getAbsolutePath()
};

percebi eu mudei no array,
e meu file pasta ficou assim: File pasta = new File(“C:\xampp\mysql\bin”)

porém continua dando o mesmo error tentei com todas extensões

Que parâmetros você passa para o método backupDB?

boolean backupDB = backup.backupDB(“bd_relatorios”, “root”, “”, “C:/MudinhoX/Data/xd.sql”);

esses
eu não sei qual o motivo pq parece que a logica que você me falou está certa
pois diz que não pode executar o dump que está na pasta bin agora por qual motivo não está encontrando eu não sei .

Cannot run program “mysqldump.exe” (in directory “C:\xampp\mysql\bin”)

public boolean backupDB(String dbName, String dbUserName, String dbPassword, String path) {
	
	String[] executeCmd = new String[] {
	        "C:\\xampp\\mysql\\bin\\mysqldump.exe ",
	        "-u ",
	        dbUserName,
	        "-p ",
	        dbPassword,
	        "--add-drop-database ",
	        "-B ",
	        dbName,
	        "-r ",
	        path
	};

	final ProcessBuilder pb = new ProcessBuilder(Arrays.asList(executeCmd));
	final Process p;
	try {
	    p = pb.start();
	    int processComplete = p.waitFor();

	    if (processComplete == 0) {
	        System.out.println("Backup created successfully");
	        return true;
	    } else {
	        System.out.println("Could not create the backup");
	        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
	        String line = null;
	        while ( (line = reader.readLine()) != null) {
	            System.out.println(line);
	        }
	    }
	} catch (IOException | InterruptedException e) {
	    e.printStackTrace();
	}
	return false;
}

consegui arrumar porém estou com error em um comando
'–add-drop-database '.

mysqldump: [ERROR] unknown option '–add-drop-database '.

Remove os espaços em branco que você deixou nos elementos desse array.
Cada String não deve começar nem terminar com espaço.
Depois posta como ficou sua solução final.