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



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 色偷偷亚洲第一综合网| 免费黄网在线观看| 黄床大片30分钟免费看| 亚洲精品国产福利片| 中文字幕在亚洲第一在线| 成人在线视频免费| 亚洲黄色免费网址| 最近免费字幕中文大全| 免费在线观看自拍性爱视频| 亚洲AV无码成人专区| 老色鬼久久亚洲AV综合| 欧洲亚洲国产清在高| 亚洲人成国产精品无码| 国产老女人精品免费视频| 毛片免费观看的视频| 真人做A免费观看| 四虎国产成人永久精品免费| 国产精品1024在线永久免费 | 亚洲最大在线视频| 久久精品国产亚洲AV果冻传媒| 亚洲精品无码AV中文字幕电影网站| 国产不卡免费视频| 日韩免费高清视频| 成人午夜大片免费7777| 日本三级2019在线观看免费| 无人在线观看免费高清| 嫩草影院在线播放www免费观看| 国产日韩久久免费影院| caoporn成人免费公开| 免费中文字幕视频| 日本免费精品一区二区三区 | 一二三四影视在线看片免费 | 一个人免费观看日本www视频| 国产亚洲美女精品久久久久| 亚洲av纯肉无码精品动漫| 亚洲欧洲无码AV不卡在线| 中文有码亚洲制服av片| 一本色道久久88—综合亚洲精品| 亚洲国产成人精品青青草原| 亚洲一级高清在线中文字幕| 亚洲国产激情在线一区|