Copiez le code comme suit :
importer java.io.BufferedReader ;
importer java.io.File ;
importer java.io.FileInputStream ;
importer java.io.FileOutputStream ;
importer java.io.IOException ;
importer java.io.InputStream ;
importer java.io.InputStreamReader ;
importer java.io.OutputStream ;
importer java.io.OutputStreamWriter ;
Test de classe publique {
public static void main(String[] args) lance IOException{
sauvegarde("d:////d.sql");
récupérer("d:////d.sql");
}
la sauvegarde publique statique vide (chemin de chaîne) lève IOException {
Runtime runtime = Runtime.getRuntime();
//-u est suivi du nom d'utilisateur, -p est le mot de passe, il est préférable de ne pas avoir d'espaces après -p, -family est le nom de la base de données
Processus process = runtime.exec("mysqldump -u root -p123456 family");
InputStream inputStream = process.getInputStream();//Obtenir le flux d'entrée et l'écrire sous forme de fichier .sql
Lecteur InputStreamReader = nouveau InputStreamReader(inputStream);
BufferedReader br = nouveau BufferedReader(lecteur);
Chaîne s = nulle ;
StringBuffer sb = new StringBuffer();
while((s = br.readLine()) != null){
sb.append(s+"//r//n");
}
s = sb.toString();
System.out.println(s);
Fichier fichier = nouveau fichier (chemin);
file.getParentFile().mkdirs();
FileOutputStream fileOutputStream = new FileOutputStream(fichier);
fileOutputStream.write(s.getBytes());
fileOutputStream.close();
br.close();
lecteur.close();
inputStream.close();
}
public static void recovery (String path) lance IOException {
Runtime runtime = Runtime.getRuntime();
//-u est suivi du nom d'utilisateur, -p est le mot de passe, il est préférable de ne pas avoir d'espaces après -p, -family est le nom de la base de données, --default-character-set=utf8, cette phrase doit être ajouté
//C'est parce que je n'ai pas ajouté cette phrase que le programme s'est exécuté avec succès, mais le contenu de la base de données est toujours le contenu précédent. Il est préférable d'écrire le SQL terminé et de le mettre dans cmd pour l'exécuter avant de savoir que le. une erreur est signalée.
//message d'erreur :
//mysql : le jeu de caractères 'utf-8' n'est pas un jeu de caractères compilé et n'est pas spécifié dans le fichier '
//C://Program Files//MySQL//MySQL Server 5.5//share//charsets//Index.xml' fichier ERREUR 2019 (HY000) : impossible
// initialise le jeu de caractères utf-8 (chemin : C://Program Files//MySQL//MySQL Server 5.5//share//charsets//),
//Un autre problème d'encodage ennuyeux, il suffit de définir l'encodage par défaut lors de la restauration.
Processus process = runtime.exec("mysql -u root -p123456 --default-character-set=utf8 family");
OutputStream outputStream = process.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
Chaîne str = null ;
StringBuffer sb = new StringBuffer();
while((str = br.readLine()) != null){
sb.append(str+"//r//n");
}
str = sb.toString();
System.out.println(str);
OutputStreamWriter écrivain = new OutputStreamWriter(outputStream,"utf-8");
écrivain.write(str);
écrivain.flush();
sortieStream.close();
br.close();
écrivain.close();
}
}