⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bak.java

📁 新闻发布系统
💻 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 + -