JAVA文件重命名怎么要2次才成功??

来源:百度知道 编辑:UC知道 时间:2024/06/16 18:59:53
Access 备份用到的文件重命名
try{
//源路径
String strDataBaseFilePath = sourcePath+"data\\CYSystem.mdb";
//dest路径
String strBackupDataBaseFilePath = sourcePath+"save\\";
delAllFile(strBackupDataBaseFilePath);
//删除文件夹下以前备份文件 不加这句运行2次才能把备份文件重命名 加了就根本不会重命名文件!
try {
Process process = Runtime.getRuntime().exec("cmd.exe /c start copy "+strDataBaseFilePath + " "+strBackupDataBaseFilePath );
process.waitFor();
} catch(Exception e){ System.out.println(e);}
//create filename
java.util.Calendar now = java.util.Calendar.getInstance();
java.text.SimpleDateFormat yearAndMonth = new java.text.SimpleDateF

不过既然是用java,java的最大优点是跨平台,为何不用平台无关的方式去处理文件复制呢(虽然输入输出流代码多了几行),还有renameTo方法用的时候小心,如果sourcePath与destPath所在分区类型不一致时可能会有问题.

我测试过了,没有问题,问题可能出在您的delAllFile方法中

package databackup;

import java.io.File;
import java.io.IOException;

public class DataBackup {

/**
* @param args
*/
public static void main(String[] args) {
String sourcePath = "D:\\Temp\\";
try {
// 源路径
String strDataBaseFilePath = sourcePath + "data\\CYSystem.mdb";
// dest路径
String strBackupDataBaseFilePath = sourcePath + "save\\";
delAllFile(strBackupDataBaseFilePath);
// 如果没有正常清空 备份文件夹的话,有可能重命名不成功.
try {
Process process= Runtime.getRuntime().exec(
"cmd.exe /c start /b copy " + strDataBaseFilePath + " "
+ strBackupDataBaseFilePath);
process.waitFor();
} catch (Exception e) {
Syste