`
war_martin
  • 浏览: 113955 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

File类文件操作

阅读更多

import java.io.File;

public class MoveFileUtil {

/**
* 移动单个文件
* @param srcFileName 待移动的原文件名
* @param destFileName 目标文件名
* @param overlay 如果目标文件存在,是否覆盖
* @return 文件移动成功返回true,否则返回false
*/
public static boolean moveFile(String srcFileName, String destFileName, boolean overlay) {
   File srcFile = new File(srcFileName);
   // 如果源文件不存在或不是文件
   if(!srcFile.exists()) {
    System.out.println("移动文件失败:源文件" + srcFileName + "不存在!");
    return false;
   } else if(!srcFile.isFile()) {
    System.out.println("移动文件失败:" + srcFileName + "不是文件!");
    return false;
   }
  
   File destFile = new File(destFileName);
   // 如果目标文件存在
   if(destFile.exists()) {
    // 如果允许覆盖
    if(overlay) {
     // 删除已存在的目标文件,目论目标文件是目录还是文件
     System.out.println("目标文件存在,准备删除......");
     if(!DeleteFileUtil.deleteFile(destFile.getAbsolutePath())) {
      System.out.println("移动文件失败:删除目标文件" + destFileName + "失败!");
      return false;
     }
    } else {
     System.out.println("移动文件失败:目标文件" + destFileName + "已存在!");
     return false;
    }   
   } else {
    if(!destFile.getParentFile().exists()) {
     // 如果目标文件所在的目录不存在,则创建目录
     System.out.println("目标文件所在目录不存在,准备创建。。。。");
     if(!destFile.getParentFile().mkdirs()) {
      System.out.println("移动文件失败,创建目标文件所在目录失败!");
      return false;
     }
    }
   }
  
   // 移动源文件至目标文件
   if(srcFile.renameTo(destFile)) {
    System.out.println("移动单个文件" + srcFileName + " 到" + destFileName + "成功!");
    return true;
   } else {
    System.out.println("移动单个文件" + srcFileName + " 到" + destFileName + "失败!");
    return false;
   }
}

/**
* 移动目录
* @param srcDirName 待移动的源目录名
* @param destDirName 目标目录名
* @param overlay 如果目标目录存在,是否覆盖
* @return 目录移动成功返回true,否则返回false
*/
public static boolean moveDirectory(String srcDirName, String destDirName, boolean overlay) {
   // 判断源目录是否存在
   File srcDir = new File(srcDirName);
   if(!srcDir.exists()) {
    System.out.println("移动目录失败:源目录" + srcDirName + "不存在!");
    return false;
   } else if(!srcDir.isDirectory()) {
    System.out.println("移动目录失败:" + srcDirName + "不是目录!");
    return false;
   }
   // 如果目标目录名不易文件分隔符结束,添加文件分隔符
   if(!destDirName.endsWith(File.separator))
    destDirName = destDirName + File.separator;
   File destDir = new File(destDirName);
   // 如果目标文件夹存在
   if(destDir.exists()) {
    // 如果允许覆盖,删除已存在的目标目录
    if(overlay) {
     System.out.println("目标目录已存在,准备删除。。。。");
     if(!DeleteFileUtil.delete(destDir.getAbsolutePath())) {
      System.out.println("移动目录失败:删除目标目录" + destDirName + "失败!");
      return false;
     }
    } else {
     System.out.println("移动目录失败:目标目录" + destDirName + "已存在!");
     return false;
    }
   }
   // 创建目标目录
   System.out.println("目标目录不存在,准备创建。。。。");
   if(!destDir.mkdirs()) {
    System.out.println("移动目录失败:创建目标目录失败!");
    return false;
   }
  
   boolean flag = true;
   // 移动源目录下的文件和子目录到目标目录下
   File[] files = srcDir.listFiles();
   for(int i = 0; i < files.length; i++) {
    // 移动子文件
    if(files[i].isFile()) {
     flag = moveFile(files[i].getAbsolutePath(), destDirName + files[i].getName(), overlay);
     if(!flag)
      break;
    }
    // 移动子目录
    if(files[i].isDirectory()) {
     flag = moveDirectory(files[i].getAbsolutePath(), destDirName + files[i].getName(), overlay);
     if(!flag)
      break;
    }
   }
   if(!flag) {
    System.out.println("移动目录" + srcDirName + "至" + destDirName + "失败!");
    return false;
   }
  
   // 删除源目录
   if(DeleteFileUtil.delete(srcDirName)) {
    System.out.println("移动目录" + srcDirName + "至" + destDirName + "成功!");
    return true;
   } else {
    System.out.println("移动目录" + srcDirName + "至" + destDirName + "失败!");
    return false;
   }    
}



public static void main(String[] args) {

   String srcDirName = "c:/test/test0";
   String destDirName = "c:/aaa";
   MoveFileUtil.moveDirectory(srcDirName, destDirName, false);
}

}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics