Fileクラスファイルアクション

4872 ワード

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);
}

}