<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:58 啥都寫點 閱讀(286) 評論(0)  編輯  收藏 所屬分類: J2SE
    實例演示:
    package book.io;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;

    public class CopyFileUtil {

        
    /**
         * 復制單個文件, 如果目標文件存在,則不覆蓋。
         * 
    @param srcFileName    待復制的文件名
         * 
    @param destFileName    目標文件名
         * 
    @return        如果復制成功,則返回true,否則返回false
         
    */
        
    public static boolean copyFile(String srcFileName, String destFileName){
            
    return CopyFileUtil.copyFile(srcFileName, destFileName, false);
        }
        
        
    /**
         * 復制單個文件
         * 
    @param srcFileName    待復制的文件名    
         * 
    @param destFileName    目標文件名
         * 
    @param overlay        如果目標文件存在,是否覆蓋
         * 
    @return    如果復制成功,則返回true,否則返回false
         
    */
        
    public static boolean copyFile(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;
                    }
                }
            }
            
    //準備復制文件
            int byteread = 0;//讀取的位數
            InputStream in = null;
            OutputStream out 
    = null;
            
    try {
                
    //打開原文件
                in = new FileInputStream(srcFile);  
                
    //打開連接到目標文件的輸出流
                out = new FileOutputStream(destFile);
                
    byte[] buffer = new byte[1024];
                
    //一次讀取1024個字節,當byteread為-1時表示文件已經讀完
                while ((byteread = in.read(buffer)) != -1) {
                    
    //將讀取的字節寫入輸出流
                    out.write(buffer, 0, byteread);
                }
                System.out.println(
    "復制單個文件" + srcFileName + "" + destFileName + "成功!");
                
    return true;
            } 
    catch (Exception e) {
                System.out.println(
    "復制文件失敗:" + e.getMessage());
                
    return false;
            } 
    finally {
                
    //關閉輸入輸出流,注意先關閉輸出流,再關閉輸入流
                if (out != null){
                    
    try {
                        out.close();
                    } 
    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                
    if (in != null){
                    
    try {
                        in.close();
                    } 
    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        
    /**
         * 復制整個目錄的內容,如果目標目錄存在,則不覆蓋
         * 
    @param srcDirName    待復制的目錄名
         * 
    @param destDirName    目標目錄名
         * 
    @return        如果復制成功返回true,否則返回false
         
    */
        
    public static boolean copyDirectory(String srcDirName, String destDirName){
            
    return CopyFileUtil.copyDirectory(srcDirName, destDirName, false);
        }
        
    /**
         * 復制整個目錄的內容
         * 
    @param srcDirName    待復制的目錄名
         * 
    @param destDirName    目標目錄名
         * 
    @param overlay        如果目標目錄存在,是否覆蓋
         * 
    @return    如果復制成功返回true,否則返回false
         
    */
        
    public static boolean copyDirectory(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 
    = CopyFileUtil.copyFile(files[i].getAbsolutePath(), 
                            destDirName 
    + files[i].getName());
                    
    if (!flag){
                        
    break;
                    }
                }
                
    // 如果是子目錄,繼續復制目錄
                if (files[i].isDirectory()) {
                    flag 
    = CopyFileUtil.copyDirectory(files[i].getAbsolutePath(), 
                            destDirName 
    + files[i].getName());
                    
    if (!flag){
                        
    break;
                    }
                }
            }
            
    if (!flag){
                System.out.println(
    "復制目錄" + srcDirName + "" + destDirName+ "失敗!");
                
    return false;
            }
            System.out.println(
    "復制目錄" + srcDirName + "" + destDirName+ "成功!");
            
    return true;

        }

        
    public static void main(String[] args) {
            
    //復制單個文件,如果目標存在,則覆蓋
            String srcPath = "C:/temp/tempfile0.txt";
            String destPath 
    = "C:/temp_bak/tempfile0_bak.txt";
            CopyFileUtil.copyFile(srcPath, destPath, 
    true);
            
    //如果目標存在,則不覆蓋
            CopyFileUtil.copyFile(srcPath, destPath);
            System.out.println();
            
    //復制文件夾,如果目標存在,則覆蓋
            String srcDir = "C:/temp";
            String destDir 
    = "D:/temp";
            CopyFileUtil.copyDirectory(srcDir, destDir, 
    true);
        }
    }
    運行結果:

    復制文件失敗:原文件C:/temp/tempfile0.txt不存在!
    復制文件失敗:原文件C:/temp/tempfile0.txt不存在!

    目標目錄已存在,準備刪除它!
    刪除目錄D:/temp\成功!
    目標目錄不存在,準備創建它!
    目標目錄不存在,準備創建它!
    目標目錄不存在,準備創建它!
    復制單個文件C:\temp\temp0\temp1\temp2\tempFile.txt至D:/temp\temp0\temp1\temp2\tempFile.txt成功!
    復制目錄C:\temp\temp0\temp1\temp2至D:/temp\temp0\temp1\temp2\成功!
    復制單個文件C:\temp\temp0\temp1\temp5895.txt至D:/temp\temp0\temp1\temp5895.txt成功!
    復制單個文件C:\temp\temp0\temp1\temp5896.txt至D:/temp\temp0\temp1\temp5896.txt成功!
    復制單個文件C:\temp\temp0\temp1\temp5897.txt至D:/temp\temp0\temp1\temp5897.txt成功!
    復制單個文件C:\temp\temp0\temp1\temp5898.txt至D:/temp\temp0\temp1\temp5898.txt成功!
    復制單個文件C:\temp\temp0\temp1\temp5899.txt至D:/temp\temp0\temp1\temp5899.txt成功!
    復制單個文件C:\temp\temp0\temp1\temp5900.txt至D:/temp\temp0\temp1\temp5900.txt成功!
    復制單個文件C:\temp\temp0\temp1\temp5901.txt至D:/temp\temp0\temp1\temp5901.txt成功!
    復制單個文件C:\temp\temp0\temp1\temp5902.txt至D:/temp\temp0\temp1\temp5902.txt成功!
    復制單個文件C:\temp\temp0\temp1\temp5903.txt至D:/temp\temp0\temp1\temp5903.txt成功!
    復制單個文件C:\temp\temp0\temp1\temp5904.txt至D:/temp\temp0\temp1\temp5904.txt成功!
    復制目錄C:\temp\temp0\temp1至D:/temp\temp0\temp1\成功!
    復制目錄C:\temp\temp0至D:/temp\temp0\成功!
    復制目錄C:/temp至D:/temp\成功!



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 亚洲av日韩av欧v在线天堂| 国产成人免费爽爽爽视频| 国产a v无码专区亚洲av | 国产高清在线免费视频| 亚洲人成色77777在线观看| 国内一级一级毛片a免费| 亚洲日本VA午夜在线电影| 日韩成人免费视频播放| 亚洲6080yy久久无码产自国产| 日韩人妻无码免费视频一区二区三区 | 免费福利在线视频| 久久精品7亚洲午夜a| 无码人妻丰满熟妇区免费| 亚洲一区二区三区电影| 免费黄色福利视频| 亚洲人成7777| 可以免费观看一级毛片黄a| 免费一级毛片在线播放视频免费观看永久 | 亚洲人成日本在线观看| 大地资源二在线观看免费高清 | 亚洲AV无码久久精品狠狠爱浪潮 | 亚洲国产成人精品久久| 免费无遮挡无码视频网站| 牛牛在线精品观看免费正| 亚洲女久久久噜噜噜熟女| 37pao成人国产永久免费视频| 亚洲av乱码一区二区三区香蕉 | 亚洲人成人网站色www| 免费成人高清在线视频| 亚洲一区二区三区免费视频 | 99爱在线精品视频免费观看9| 久久亚洲精品国产亚洲老地址| www.亚洲精品.com| 久久久久久久久久国产精品免费| 亚洲H在线播放在线观看H| 一本色道久久88综合亚洲精品高清| 中国一级毛片免费看视频| 久久亚洲精品专区蓝色区| 久久精品国产精品亚洲艾草网美妙| 最近中文字幕国语免费完整 | 99在线热播精品免费99热|