地址 :http://dl2.csdn.net/down4/20070911/11165453513.bat
* 恢复数据(mysql中cnids_manager数据库中的数据)
* 根据用户上传的文件恢复数据库
* 主要步骤:
* 1.通过上传的FormFile获得文件输入流
* 2.创建一个输出流,没有路径的,系统会默认保存到tomcat/bin目录里面
* 3.获得保存文件的绝对路径
* 4.从配置文件中获取数据库信息(帐户,密码,IP地址)
* 5.执行批处理文件恢复数据(将3,4的信息作为参数传入批处理文件)
*/
public void resume(FormFile file) throws Exception {
String fileName = null;
if (file != null && file.getFileName().length() > 0) { //判断上传文件是否为空
fileName = file.getFileName(); //获取文件名
InputStream streamIn = file.getInputStream(); //获得上传文件的输入流
OutputStream streamOut = new FileOutputStream(fileName); //构建一个输出流,生成的文件将会保存在tomcat/bin目录下
int bytesRead = 0;
byte[] buffer = new byte[1024];
//循环的将上传的文件写入到fileName里面
while((bytesRead = streamIn.read(buffer, 0, 1024)) != -1) {
streamOut.write(buffer, 0, bytesRead);
}
//关闭输出流
streamOut.close();
streamIn.close(); //关闭输入流
file.destroy(); //销毁file
File tempFile = null;
tempFile = new File(fileName);
String absolutePath = tempFile.getAbsolutePath(); //获得绝对路径,在tomcat/bin目录下
log.info("absolutePath: " + absolutePath);
String commondStr = "";
String mysqlUserName = Util.getProperty("mysql_username"); //数据库帐户
String mysqlPassword = Util.getProperty("mysql_password"); //数据库密码
String host = Util.getProperty("mysql_host"); //数据库IP地址
String dateHandleDir = Util.getProperty("dateHandleDir"); //批处理文件路径
String resumeDir = dateHandleDir+"resume.bat";
//resumeDir是恢复数据库的批处理文件地址,后面的是需要传入的参数
commondStr = "/""+resumeDir + "/"" + " " + mysqlUserName + " " + mysqlPassword + " " + host + " " + "/""+absolutePath + "/"";
//mysqlUserName数据用户名 ,mysqlPassword为密码,host为主机名,absolutepath为上传的文件的绝对路径
log.debug("commondStr: " + commondStr);
Runtime cmd = Runtime.getRuntime();
boolean haveError = false;
Process p = cmd.exec(commondStr); //执行这个还原的批处理文件
String line;
p.getOutputStream().close();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream())); //读取错误信息
while ((line = br.readLine()) != null) { //如果错误信息不为null说明出错了
//发生错误
log.info("<<<<<<<" + line);
haveError = true;
}
if (haveError) {
//恢复数据库时发生错误
throw new CnidsException(Constants.FAIL_RESUME_SQL);
}
//}
tempFile.delete(); //操作完成,删除tempFile文件
}
}