<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    移動文件和目錄

    Posted on 2009-05-24 20:54 啥都寫點 閱讀(263) 評論(0)  編輯  收藏 所屬分類: J2SE
    關鍵技術:
    • File的renameTo方法能移動文件。
    • 當目標文件存在,或者目標文件的父目錄不存在時,renameTo方法返回false.


    package book.io;
    import java.io.File;
    /**
     * 移動文件或目錄
     
    */
    public class MoveFileUtil {

        
    /**
         * 移動單個文件,不覆蓋已存在的目標文件
         * 
    @param srcFileName    待移動的原文件名    
         * 
    @param destFileName    目標文件名
         * 
    @return        文件移動成功返回true,否則返回false
         
    */
        
    public static boolean moveFile(String srcFileName, String destFileName){
            
    //默認為不覆蓋目標文件
            return MoveFileUtil.moveFile(srcFileName, destFileName, false);
        }
        
    /**
         * 移動單個文件
         * 
    @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.delete(destFileName)){
                        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 true;
            }
        }
        
        
    /**
         * 移動目錄,不覆蓋已存在的目標目錄
         * 
    @param srcDirName    待移動的原目錄名
         * 
    @param destDirName    目標目錄名
         * 
    @return        目錄移動成功返回true,否則返回false
         
    */
        
    public static boolean moveDirectory(String srcDirName, String destDirName){
            
    //默認為不覆蓋目標文件
            return MoveFileUtil.moveDirectory(srcDirName, destDirName, 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(destDirName)){
                        System.out.println(
    "移動目錄失敗:刪除目標目錄" + destDirName + "失敗!");
                    }
                } 
    else {
                    System.out.println(
    "移動目錄失敗:目標目錄" + destDirName + "已存在!");
                    
    return false;
                }
            } 
    else {
                
    //創建目標目錄
                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 
    = MoveFileUtil.moveFile(files[i].getAbsolutePath(), 
                            destDirName 
    + files[i].getName(), overlay);
                    
    if (!flag){
                        
    break;
                    }
                }
                
    //移動子目錄
                else if (files[i].isDirectory()){
                    flag 
    = MoveFileUtil.moveDirectory(files[i].getAbsolutePath(), 
                            destDirName 
    + files[i].getName(), overlay);
                    
    if (!flag){
                        
    break;
                    }
                }
            }
            
    if (!flag){
                System.out.println(
    "移動目錄" + srcDirName + "" + destDirName+ "失敗!");
                
    return false;
            }
            
    // 刪除原目錄
            if (DeleteFileUtil.deleteDirectory(srcDirName)){
                System.out.println(
    "移動目錄" + srcDirName + "" + destDirName+ "成功!");
                
    return true;
            } 
    else {
                System.out.println(
    "移動目錄" + srcDirName + "" + destDirName+ "失敗!");
                
    return false;
            }
        }
        
        
    public static void main(String[] args) {
            
    //移動單個文件,如果目標文件存在,則替換
            String srcFileName = "C:/temp/temp.txt";
            String destFileName 
    = "C:/tempbak/temp_bak.txt.";
            MoveFileUtil.moveFile(srcFileName, destFileName, 
    true);
            System.out.println();
            
    //移動目錄,如果目標目錄存在,則不覆蓋
            String srcDirName = "C:/temp";
            String destDirName 
    = "C:/tempbak";
            MoveFileUtil.moveDirectory(srcDirName, destDirName);
        }
    }



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 可以免费观看的国产视频| 一区二区免费电影| 91精品国产免费久久久久久青草| 亚洲AV永久无码区成人网站| 国产真人无码作爱视频免费| 久久亚洲精品无码| 免费国产黄网站在线观看可以下载| 亚洲乱码精品久久久久..| 三年片在线观看免费西瓜视频| 中国亚洲女人69内射少妇| 中文字幕在线免费播放| 亚洲国产精品无码av| 日本免费大黄在线观看| 久久亚洲精品国产精品| 亚洲人成电影网站免费| 亚洲爆乳AAA无码专区| 四虎影在线永久免费四虎地址8848aa| 美女18毛片免费视频| 伊人久久大香线蕉亚洲| 香港a毛片免费观看| 亚洲一线产区二线产区区| 伊人久久亚洲综合影院| 男女午夜24式免费视频| 亚洲youjizz| 亚洲AV成人潮喷综合网| 日韩成人免费视频| 亚洲av片不卡无码久久| 国产免费人成在线视频| a毛片在线免费观看| 色噜噜亚洲男人的天堂| 亚洲一区二区三区无码影院| 无码国产精品一区二区免费式芒果 | 亚洲人成777在线播放| 成年18网站免费视频网站| 黄色三级三级三级免费看| 亚洲AV无码成人精品区在线观看 | 污污视频网站免费观看| 亚洲av福利无码无一区二区 | a级午夜毛片免费一区二区| 久久狠狠爱亚洲综合影院| 亚洲国产精品成人|