📄 databackupframe.java
字号:
}
//取得文件路径
String pathName = jTextField1.getText().trim();
if(pathName.length() == 0){
JOptionPane.showMessageDialog(null, "请选择备份文件目录.");
return;
}
//清空信息列表框的内容
listData3.clear();
String tableName = "";
for(int i = 0; i < selectedIndexes.length; i++){
//取得选择数据表的名字
tableName = (String)listData1.getElementAt(selectedIndexes[i]);
try{
//备份数据表
backupTable(tableName, pathName);
}catch(Exception ex){
ex.printStackTrace();
}
}
//单击备份所有数据表按钮的处理代码
}else if(actionCommand.equals("backupAllTables")){
if(listData1.size() == 0){
JOptionPane.showMessageDialog(null, "请显示数据表.");
return;
}
//取得文件路径
String pathName = jTextField1.getText().trim();
if(pathName.length() == 0){
JOptionPane.showMessageDialog(null, "请选择备份文件目录.");
return;
}
//清空信息列表框的内容
listData3.clear();
String tableName = "";
for(int i = 0; i < listData1.size(); i++){
//取得选择数据表的名字
tableName = (String)listData1.getElementAt(i);
try{
//备份数据表
backupTable(tableName, pathName);
}catch(Exception ex){
ex.printStackTrace();
}
}
//单击恢复选择文件按钮的处理代码
}else if(actionCommand.equals("restoreSelectedFiles")){
//取得文件路径
String pathName = jTextField1.getText().trim();
if(pathName.length() == 0){
JOptionPane.showMessageDialog(null, "请选择备份文件目录.");
return;
}
int[] selectedIndexes = jList2.getSelectedIndices();
if(selectedIndexes.length == 0){
JOptionPane.showMessageDialog(null, "请选择备份文件.");
return;
}
if(listData1.size() == 0){
JOptionPane.showMessageDialog(null, "请显示数据表.");
return;
}
//清空信息列表框的内容
listData3.clear();
String fileName = "";
for(int i = 0; i < selectedIndexes.length; i++){
fileName = (String)listData2.getElementAt(selectedIndexes[i]);
//根据文件名取得数据表的名字
String tableName = fileName.substring(0, fileName.indexOf(".dat"));
//检查数据表名字是否存在
if(listData1.indexOf(tableName) == -1){
JOptionPane.showMessageDialog(null, fileName + "文件的数据表在数据库不存在,"
+ "不可以进行恢复操作.");
continue;
}
try{
restoreTable(fileName, tableName, pathName);
}catch(Exception ex){
ex.printStackTrace();
}
}
//单击恢复全部文件按钮的处理代码
}else if(actionCommand.equals("restoreAllFiles")){
//取得文件路径
String pathName = jTextField1.getText().trim();
if(pathName.length() == 0){
JOptionPane.showMessageDialog(null, "请选择备份文件目录.");
return;
}
if(listData2.size() == 0){
JOptionPane.showMessageDialog(null, "请显示备份文件.");
return;
}
if(listData1.size() == 0){
JOptionPane.showMessageDialog(null, "请显示数据表.");
return;
}
//清空信息列表框的内容
listData3.clear();
String fileName = "";
for(int i = 0; i < listData2.size(); i++){
fileName = (String)listData2.getElementAt(i);
//根据文件名取得数据表的名字
String tableName = fileName.substring(0, fileName.indexOf(".dat"));
//检查数据表名字是否存在
if(listData1.indexOf(tableName) == -1){
JOptionPane.showMessageDialog(null, fileName + "文件的数据表在数据库不存在,"
+ "不可以进行恢复操作.");
continue;
}
try{
restoreTable(fileName, tableName, pathName);
}catch(Exception ex){
ex.printStackTrace();
}
}
}else if(actionCommand.equals("exit")){
exit();
}
}
//将数据表数据保存在文件的方法
public void backupTable(String tableName, String pathName) throws Exception{
String[][] data = null;
//创建文件类
File file = new File(pathName + "\\" + tableName + ".dat");
if(file.isFile()){
//取得信息确认框的返回值
int actionInt = JOptionPane.showConfirmDialog(null, tableName + ".dat"
+ "文件已存在,是否覆盖该文件?", "信息确认框",
JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE);
//如果单击否按钮,不进行覆盖操作
if(actionInt == JOptionPane.NO_OPTION){
listData3.addElement(tableName + ".dat文件已存在,不进行覆盖操作.");
return;
}
}
//创建文件写出类
FileWriter writer = new FileWriter(pathName + "\\" + tableName + ".dat");
//取得数据表的数据
data = stockManagementData.getDataByTableName(tableName);
for (int row = 0; row < data.length; row++) {
for (int col = 0; col < data[0].length; col++) {
//如果字段值为空值,转换为null字符串,如果字段值的长度为度,加入一个空格
if(data[row][col] == null){
data[row][col] = "null";
}else if(data[row][col].length() == 0){
data[row][col] = " ";
}
if(col == data[0].length -1){
//\n是换行符
writer.write(data[row][col] + "\n");
}else{
//\t是水平制表符
writer.write(data[row][col] + "\t");
}
}
}
//关闭文件写出类
writer.close();
listData3.addElement(tableName + "数据表成功备份,数据表的保存路径是" + pathName + ".");
//将用户备份数据表信息写入日志数据表
stockManagementData.createUserLog("数据备份窗口", tableName + "数据表备份操作",
user.getUserName());
}
//将文件数据写入数据表的方法
public void restoreTable(String fileName, String tableName, String pathName) throws
Exception {
//创建数组
String[][] data = null;
File inFile = new File(pathName + "\\" + fileName);
//读入文件
FileReader reader = new FileReader(inFile);
//创建集合类
Vector vector = new Vector();
BufferedReader bufferedReader = new BufferedReader(reader);
while (bufferedReader.ready()) {
//读入一行内容
vector.add(bufferedReader.readLine());
}
if (vector.size() > 0) {
//取得行总数
int rowLength = vector.size();
String tempStr = (String) vector.get(0);
StringTokenizer stringToken = new StringTokenizer(tempStr, "\t");
//取得列总数
int colLength = stringToken.countTokens();
//根据行和列的总数创建内容数组
data = new String[rowLength][colLength];
for (int row = 0; row < rowLength; row++) {
stringToken = new StringTokenizer( (String) vector.get(row), "\t");
for (int col = 0; col < colLength; col++) {
tempStr = stringToken.nextToken();
//取代/n字符串
tempStr.replace('\n', ' ');
tempStr = tempStr.trim();
//向数组写入内容
data[row][col] = tempStr;
}
}
//将数组数据写入数据表
stockManagementData.setDataByTableName(tableName, data);
listData3.addElement(fileName + "文件的数据已写入数据表" + tableName + ".");
//将用户恢复数据表信息写入日志数据表
stockManagementData.createUserLog("数据备份窗口", tableName + "数据表恢复操作",
user.getUserName());
}
else {
listData3.addElement(fileName + "文件没有数据.");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -