次のようにコードをコピーします。
java.io.BufferedReaderをインポートします。
java.io.ファイルをインポートします。
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) throws IOException{
バックアップ("d:////d.sql");
回復("d:////d.sql");
}
public static void backup(String path) throws IOException{
ランタイム runtime = Runtime.getRuntime();
//-u の後にはユーザー名が続きます。-p はパスワードです。-p の後にスペースを入れないことをお勧めします。-family はデータベースの名前です。
プロセス process = runtime.exec("mysqldump -u root -p123456 family");
InputStream inputStream = process.getInputStream();//入力ストリームを取得し、.sql ファイルとして書き込みます
InputStreamReader リーダー = 新しい InputStreamReader(inputStream);
BufferedReader br = new BufferedReader(リーダー);
文字列 s = null;
StringBuffer sb = new StringBuffer();
while((s = br.readLine()) != null){
sb.append(s+"//r//n");
}
s = sb.toString();
System.out.println;
ファイル file = 新しいファイル(パス);
file.getParentFile().mkdirs();
FileOutputStream fileOutputStream = 新しい FileOutputStream(file);
fileOutputStream.write(s.getBytes());
fileOutputStream.close();
br.close();
Reader.close();
inputStream.close();
}
public static void reverse(String path) throws IOException{
ランタイム runtime = 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//),
//もう 1 つの厄介なエンコーディングの問題です。復元時にデフォルトのエンコーディングを設定するだけです。
プロセス process = runtime.exec("mysql -u root -p123456 --default-character-set=utf8 family");
OutputStream 出力ストリーム = process.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
文字列 str = null;
StringBuffer sb = new StringBuffer();
while((str = br.readLine()) != null){
sb.append(str+"//r//n");
}
str = sb.toString();
System.out.println(str);
OutputStreamWriter ライター = new OutputStreamWriter(outputStream,"utf-8");
Writer.write(str);
ライター.flush();
出力ストリーム.close();
br.close();
Writer.close();
}
}