Скопируйте код кода следующим образом:
импортировать java.io.BufferedReader;
импортировать java.io.File;
импортировать java.io.FileInputStream;
импортировать java.io.FileOutputStream;
импортировать java.io.IOException;
импортировать java.io.InputStream;
импортировать java.io.InputStreamReader;
импортировать java.io.OutputStream;
импортировать java.io.OutputStreamWriter;
тест публичного класса {
public static void main(String[] args) выдает IOException{
резервная копия("d:////d.sql");
восстановить("d:////d.sql");
}
общедоступная статическая недействительная резервная копия (строковый путь) выдает IOException {
Время выполнения = Runtime.getRuntime();
// после -u следует имя пользователя, -p — пароль, после -p лучше не использовать пробелы, -family — имя базы данных
Процесс процесс = runtime.exec("mysqldump -u root -p123456 Family");
InputStream inputStream =process.getInputStream();//Получаем входной поток и записываем его как файл .sql
Читатель InputStreamReader = новый InputStreamReader (inputStream);
BufferedReader br = новый BufferedReader (читатель);
Строка с = ноль;
StringBuffer sb = новый StringBuffer();
while((s = br.readLine()) != null){
sb.append(s+"//r//n");
}
s = sb.toString();
System.out.println(s);
Файл файл = новый файл (путь);
file.getParentFile().mkdirs();
FileOutputStream fileOutputStream = новый FileOutputStream (файл);
fileOutputStream.write(s.getBytes());
fileOutputStream.close();
бр.закрыть();
читатель.закрыть();
inputStream.close();
}
public static void Recovery (String path) выдает IOException {
Время выполнения = Runtime.getRuntime();
// после -u следует имя пользователя, -p — пароль, после -p лучше не использовать пробелы, -family — имя базы данных, --default-character-set=utf8, это предложение должно быть быть добавлено
//Именно потому, что я не добавил это предложение, программа работала успешно, но содержимое базы данных по-прежнему остается предыдущим. Лучше всего написать завершенный sql и поместить его в cmd, чтобы запустить его, прежде чем вы узнаете, что произошло. сообщается об ошибке.
//сообщение об ошибке:
//mysql: набор символов «utf-8» не является скомпилированным набором символов и не указан в параметре '
//C://Program Files//MySQL//MySQL Server 5.5//share//charsets//Index.xml' файл ОШИБКА 2019 (HY000): невозможно
// инициализируем набор символов utf-8 (путь: C://Program Files//MySQL//MySQL Server 5.5//share//charsets//),
//Еще одна досадная проблема с кодировкой: при восстановлении просто установите кодировку по умолчанию.
Процесс процесс = runtime.exec("mysql -u root -p123456 --default-character-set=utf8 Family");
OutputStream outputStream =process.getOutputStream();
BufferedReader br = новый BufferedReader (новый InputStreamReader (новый FileInputStream (путь)));
Строка ул = ноль;
StringBuffer sb = новый StringBuffer();
while((str = br.readLine()) != null){
sb.append(str+"//r//n");
}
стр = sb.toString();
System.out.println(str);
Writer OutputStreamWriter = новый OutputStreamWriter(outputStream,"utf-8");
писатель.писать (стр);
писатель.flush();
выходной поток.закрыть();
бр.закрыть();
писатель.закрыть();
}
}