用java做了个备份和恢复mysql数据库的程序,备份可以了,但是恢复总是报错:java.io.IOException: 管道正在被关闭。希望各位大虾指点下 小弟在这里谢谢了 拷贝别人的答案的就不要 在这里发了 影响心情 代码如下 String fPath = "d:\\20100915100942.sql";
FileInputStream fis = new FileInputStream(fPath);
Runtime rt = Runtime.getRuntime();
Process child = rt.exec("mysql -h 127.0.0.1 -uroot -proot -P3306 --set-charset=utf8 ybdj");//
// ybdj 是数据库名
OutputStream out1 = child.getOutputStream();//控制台的输入信息作为输出流
InputStreamReader xx =new InputStreamReader(fis, "utf-8");
String inStr;
String outStr;
StringBuffer sb = new StringBuffer(""); BufferedReader br = new BufferedReader(xx);
while ((inStr = br.readLine()) != null)
{
sb.append(inStr + "\r\n");
//System.out.println(" br.readLine()="+ br.readLine());
}
outStr = sb.toString();
OutputStreamWriter writer = new OutputStreamWriter(out1, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
// writer.flush();
writer.close();
br.close();
xx.close();
out1.close();
fis.close();
报错的地方就在 writer.write(outStr); 上面这行 错误代码如下
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 util.DataLoad.doPost(DataLoad.java:80)
FileInputStream fis = new FileInputStream(fPath);
Runtime rt = Runtime.getRuntime();
Process child = rt.exec("mysql -h 127.0.0.1 -uroot -proot -P3306 --set-charset=utf8 ybdj");//
// ybdj 是数据库名
OutputStream out1 = child.getOutputStream();//控制台的输入信息作为输出流
InputStreamReader xx =new InputStreamReader(fis, "utf-8");
String inStr;
String outStr;
StringBuffer sb = new StringBuffer(""); BufferedReader br = new BufferedReader(xx);
while ((inStr = br.readLine()) != null)
{
sb.append(inStr + "\r\n");
//System.out.println(" br.readLine()="+ br.readLine());
}
outStr = sb.toString();
OutputStreamWriter writer = new OutputStreamWriter(out1, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
// writer.flush();
writer.close();
br.close();
xx.close();
out1.close();
fis.close();
报错的地方就在 writer.write(outStr); 上面这行 错误代码如下
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 util.DataLoad.doPost(DataLoad.java:80)
解决方案 »
- 求助 关于技术版本升级的思考
- 关于Struts2无法直接访问action的问题
- 对象集合读取后,占用内存的问题
- struts配置文件action里的attribute和name分别是什么作用?
- 请问EJB做的程序是不是不能跨平台啊?如果真的这样,能不能把程序放到每个操作系统里重新编译一遍啊?
- hibernate是如何确定Oracle中的sequence
- 菜鸟问题:望高手解答
- 基础问题,关于持久层的疑惑
- 关于 no db2jdbc in java.library.path错误????
- 界面优化:加复选框筛选新闻状态:有效、空白,未实现
- 帮忙啦 当把一个SSH的应用部署到另一台LINUX 64位的机子上时 应用启动时报错 在线等待
- Tomcat6.0启动时报错严重: Error listenerStart
PrintStream ps = new PrintStream(child);
ps.start();
child.waitFor();
if (child.exitValue() != 0) {
throw new Exception("...");
}
...新开一个线程 PrintStream,主要做你写的这段内容:OutputStream out1 = child.getOutputStream();//控制台的输入信息作为输出流
InputStreamReader xx =new InputStreamReader(fis, "utf-8");
String inStr;
String outStr;
StringBuffer sb = new StringBuffer(""); BufferedReader br = new BufferedReader(xx);
while ((inStr = br.readLine()) != null)
{
sb.append(inStr + "\r\n");
//System.out.println(" br.readLine()="+ br.readLine());
}
while ((inStr = br.readLine()) != null)
{
writer.write(inStr + "\r\n");
}