📄 bak.java
字号:
package dsp.web;/** * <p>Title: DSP实验室</p> * <p>Description: DSP教学网 * 数据备份与恢复 * </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author 李艳生 * @version 1.0 */import java.io.*;import java.util.*;import dsp.utils.*;import dsp.database.*;import java.sql.*;public class Bak { //MySQL数据库的数据路径 private String home; //数据库的备份路径 private String bak; private boolean status; private String msg; //路径分隔符 private String s; //读到数据库配置信息 private void loadProp(){ InputStream is = getClass().getResourceAsStream("/setup.txt"); Properties props = new Properties(); try{ props.load(is); }catch(Exception e){ System.err.println("不能读取配置文件. 请确保setup.txt在classes指定的路径中"); } Enumeration propNames = props.propertyNames(); while (propNames.hasMoreElements()) { String name = (String) propNames.nextElement(); if (name.endsWith(".driver")) { String poolName = name.substring(0, name.lastIndexOf(".")); home = props.getProperty(poolName + ".home"); bak = props.getProperty(poolName + ".bak"); } } } public Bak() { loadProp(); status = false; msg = ""; s = File.separator; s += s; } public String getMsg() { return msg; } public boolean isStatus() { return status; } /** 文件复制 * src:源文件名 * dst:目标文件名 */ private void copyFile(String src, String dst) throws ClassNotFoundException, IOException{ FileInputStream in = null; FileOutputStream out = null; File inputFile = new File(src); File outputFile = new File(dst); if(!outputFile.exists()){ outputFile.createNewFile(); } in = new FileInputStream(inputFile); out = new FileOutputStream(outputFile); int c; while((c=in.read())!=-1){ out.write(c); } in.close(); out.close(); } /** 复制目录 * src: 源目录 * dst: 目的目录 */ private boolean copyDir(String src, String dst) throws ClassNotFoundException,IOException{ File sDir = new File(src); File dDir = new File(dst); if((!sDir.isDirectory()) || (!dDir.isDirectory())){ //非目录 return false; } String[] sf = sDir.list(); for(int i = 0; i < sf.length; i ++){ copyFile(src + sf[i], dst + sf[i]); } return true; } /** 数据库备份 * */ public void bakup() throws ClassNotFoundException, IOException,SQLException{ long time = GetDate.getLongTime(); home += s; bak += s+time; File dir = new File(bak); if(!dir.mkdir()){ status = false; msg = "目录创建失败,请重新备份!"; return; } bak += s; if(copyDir(home, bak)){ status = true; } else{ status = false; msg = "文件复制失败,请重新备份!"; return ; } //把备份的相关信息写入库中保存 Operation conn = new Operation(); String sql = "INSERT INTO web_bak(dir, date) VALUES('"+time+"','"+GetDate.getStringDate()+"')"; try{ conn.update(sql); status = true; } catch(Exception e){ status = false; msg = "备份信息写入数据库失败,请重新备份!"; } finally{ conn.closestmt(); conn.closeconn(); } } /** 恢复数据库 * id:备份的ID号 */ public void restore(int id) throws ClassNotFoundException, IOException,SQLException{ //从数据库中读取备份的相关信息 Operation conn = new Operation(); String sql = "SELECT * FROM web_bak WHERE id="+ id; ResultSet rs = null; String d = ""; try{ rs = conn.query(sql); rs.next(); d = rs.getString("dir"); status = true; } catch(Exception e){ status = false; msg = "从数据库中读取备份信息失败,请重新恢复!"; } finally{ conn.closestmt(); conn.closeconn(); } home += s; bak += s+d; File dir = new File(bak); if(!dir.exists()){ status = false; msg = "备份不存在,请另外选择备份恢复!"; return; } bak += s; if(copyDir(bak, home)){ status = true; } else{ status = false; msg = "文件复制失败,请重新恢复!"; return ; } } /** 删除备份 * id:备份 ID 号 */ public void delBak(int id) throws ClassNotFoundException, IOException,SQLException{ //从数据库中读取备份的相关信息 Operation conn = new Operation(); String sql = "SELECT * FROM web_bak WHERE id="+ id; ResultSet rs = null; String d = ""; try{ rs = conn.query(sql); rs.next(); d = rs.getString("dir"); //删除备份的相关信息 sql = "DELETE FROM web_bak WHERE id=" + id; conn.update(sql); status = true; } catch(Exception e){ status = false; msg = "从数据库中删除备份信息失败,请重新删除!"; } finally{ conn.closestmt(); conn.closeconn(); } bak += s+d; File dir = new File(bak); if(!dir.exists()){ status = false; msg = "备份不存在,不用删除!"; return; } File fs[] = dir.listFiles(); for(int i = 0; i < fs.length; i ++){ if(fs[i].delete()){ status = true; } else{ status = false; msg = "文件删除失败,请重新删除!"; return ; } } if(dir.delete()){ status = true; } else{ status = false; msg = "目录删除失败,请重新删除!"; return ; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -