//package com.glacier.frame.service.system; // //import java.io.BufferedReader; //import java.io.File; //import java.io.FileOutputStream; //import java.io.InputStream; //import java.io.InputStreamReader; //import java.io.OutputStreamWriter; //import java.text.SimpleDateFormat; //import java.util.Calendar; //import java.util.Date; //import javax.annotation.PostConstruct; //import org.springframework.stereotype.Service; //import org.springframework.transaction.annotation.Propagation; //import org.springframework.transaction.annotation.Transactional; // ///** // * @ClassName: DataBackUpService // * @Description: TODO(数据备份业务层) // * @author junjie.zheng // * @email 1203807137@QQ.com // * @date 2014-8-5上午8:57:51 // */ // //@Service("DataBackUpService") //@Transactional(readOnly=true,propagation=Propagation.REQUIRED) //public class DataBackUpService { // // /** // * @Title: handleDataBackUp // * @Description: TODO(数据备份) // * @throws // */ // @PostConstruct // public void handleDataBackUp(){ // try { // //构建SQL命令执行路径 // String sqlWebapp=null; // String sqlPath=System.getProperty("user.dir"); // if(sqlPath.contains("netloan-module")) // sqlWebapp=sqlPath.replaceAll("\\\\","\\\\\\\\").replaceAll("netloan-module","netloan-webapp"); // if(sqlPath.contains("netloan-website")) // sqlWebapp=sqlPath.replaceAll("\\\\","\\\\\\\\").replaceAll("netloan-website","netloan-webapp"); // if(sqlPath.contains("netloan-webapp")) // sqlWebapp=sqlPath.replaceAll("\\\\","\\\\\\\\"); // // 创建隐藏文件夹存储备份数据 // File file_netloan = new File(""+sqlWebapp+"\\src\\main\\webapp\\resources\\backupsql"); // if (!file_netloan.exists() || !file_netloan.isDirectory()) { // file_netloan.mkdir(); // } // //判断存储文件是否为空文件 // if(file_netloan.listFiles().length>0){ // //指定文件夹内最后修改时间 // long file_time=file_netloan.lastModified(); // // 当前日历设置 // Calendar calendar = Calendar.getInstance(); // calendar.set(Calendar.HOUR_OF_DAY, 0);// 设置日历时 // calendar.set(Calendar.MINUTE, 0);// 设置日历分 // calendar.set(Calendar.SECOND, 0);// 设置日历秒 // Date date=new Date(file_time);//文件夹内最后修改时间 // //判断文件夹内是否有当天的备份文件 // if(date.before(calendar.getTime())){ // //构建执行命令 // Runtime rt = Runtime.getRuntime(); // //调用调用 mysql命令 // Process child = rt.exec(""+sqlWebapp+"\\src\\main\\webapp\\resources\\mysql\\mysqldump.exe -h localhost -uroot -proot netloan");// 设置导出编码为utf8。这里必须是utf8 // //把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行 // InputStream in = child.getInputStream();// 控制台的输出信息作为输入流 // InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码 // String inStr; // StringBuffer sb = new StringBuffer(""); // String outStr; // //组合控制台输出信息字符串 // BufferedReader br = new BufferedReader(xx); // while ((inStr = br.readLine()) != null) { // sb.append(inStr + "\r\n"); // } // outStr = sb.toString(); // //日期格式转化 // SimpleDateFormat sf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss"); // String str = "netloan" + sf.format(new Date()) + ".sql"; // // 要用来做导入用的sql目标文件: // FileOutputStream fout = new FileOutputStream(""+sqlWebapp+"\\src\\main\\webapp\\resources\\backupsql\\" + str + ""); // OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8"); // writer.write(outStr); // // 如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免 // writer.flush(); // // 关闭输入输出流 // in.close(); // xx.close(); // br.close(); // writer.close(); // fout.close(); // } // }else{ // //构建执行命令 // Runtime rt = Runtime.getRuntime(); // //调用 mysql命令 // Process child = rt.exec(""+sqlWebapp+"\\src\\main\\webapp\\resources\\mysql\\mysqldump.exe -h localhost -uroot -proot netloan");// 设置导出编码为utf8。这里必须是utf8 // //把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行 // InputStream in = child.getInputStream();// 控制台的输出信息作为输入流 // InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码 // String inStr; // StringBuffer sb = new StringBuffer(""); // String outStr; // //组合控制台输出信息字符串 // BufferedReader br = new BufferedReader(xx); // while ((inStr = br.readLine()) != null) { // sb.append(inStr + "\r\n"); // } // outStr = sb.toString(); // //日期格式转化 // SimpleDateFormat sf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss"); // String str = "netloan" + sf.format(new Date()) + ".sql"; // // 要用来做导入用的sql目标文件: // FileOutputStream fout = new FileOutputStream(""+sqlWebapp+"\\src\\main\\webapp\\resources\\backupsql\\" + str + ""); // OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8"); // writer.write(outStr); // // 如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免 // writer.flush(); // // 关闭输入输出流 // in.close(); // xx.close(); // br.close(); // writer.close(); // fout.close(); // } // } catch (Exception e) { // e.printStackTrace(); // } // } //}