Java来恢复MySql数据,但是报错了什么管道已结束,找了好久都没找到原因。。哎。

取与舍 2011-12-21 01:42:44

package com.hancai.base.admin.action;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;


public class Test {
public static void main(String[] args) throws IOException{
recover("d:\\fjsdljfls.sql");
}
public static void backup(String path) throws IOException{
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("mysqldump -u root -p123456 family");
InputStream inputStream = process.getInputStream();
InputStreamReader reader = new InputStreamReader(inputStream);
BufferedReader br = new BufferedReader(reader);
String s = null;
StringBuffer sb = new StringBuffer();
while((s = br.readLine()) != null){
sb.append(s+"\r\n");
}
s = sb.toString();
System.out.println(s);
File file = new File(path);
file.getParentFile().mkdirs();
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(s.getBytes());
fileOutputStream.close();
br.close();
reader.close();
inputStream.close();
}
public static void recover(String path) throws IOException{
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("mysql -u root -p123456 family");
OutputStream outputStream = process.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
String str = null;
StringBuffer sb = new StringBuffer();
while((str = br.readLine()) != null){
sb.append(str+"\r\n");
}
str = sb.toString();
System.out.println(str);
OutputStreamWriter writer = new OutputStreamWriter(outputStream,"utf-8");
writer.write(str);
writer.flush();
outputStream.close();
br.close();
writer.close();
}
}


备份数据可以正常备份,但是恢复就出来了,搞不懂是为什么,下面是错误代码:

Exception in thread "main" java.io.IOException: 管道已结束。
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:260)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:105)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:263)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:116)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:203)
at java.io.Writer.write(Writer.java:140)
at com.hancai.base.admin.action.Test.recover(Test.java:64)
at com.hancai.base.admin.action.Test.main(Test.java:26)


有没有人跟我一样遇到过这种问题?帮忙解决一下吧。谢谢了。
...全文
215 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
取与舍 2011-12-21
  • 打赏
  • 举报
回复
已经解决问题,问题已经解决。
http://blog.csdn.net/okey_easy/article/details/7091411
谢谢各位了。
什么都不能 2011-12-21
  • 打赏
  • 举报
回复
用命令恢复比较好吧
安特矮油 2011-12-21
  • 打赏
  • 举报
回复
没这样搞过。不过我估计是mysql关闭了连接吧,导致你的输出流关闭。
取与舍 2011-12-21
  • 打赏
  • 举报
回复
没有人吗?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧