<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()){
                    
    //如果目標文件所在的目錄不存在,則創(chuàng)建目錄
                    System.out.println("目標文件所在的目錄不存在,準備創(chuàng)建它!");
                    
    if(!destFile.getParentFile().mkdirs()){
                        System.out.println(
    "復制文件失敗:創(chuàng)建目標文件所在的目錄失敗!" );
                        
    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個字節(jié),當byteread為-1時表示文件已經讀完
                while ((byteread = in.read(buffer)) != -1) {
                    
    //將讀取的字節(jié)寫入輸出流
                    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 {
                
    // 創(chuàng)建目標目錄
                System.out.println("目標目錄不存在,準備創(chuàng)建它!");
                
    if (!destDir.mkdirs()) {
                    System.out.println(
    "復制目錄失敗:創(chuàng)建目標目錄失敗!");
                    
    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;
                    }
                }
                
    // 如果是子目錄,繼續(xù)復制目錄
                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\成功!
    目標目錄不存在,準備創(chuàng)建它!
    目標目錄不存在,準備創(chuàng)建它!
    目標目錄不存在,準備創(chuàng)建它!
    復制單個文件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\成功!



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: xxxxwww免费| 中文字幕无码播放免费| 亚洲国产婷婷综合在线精品| 亚洲综合精品伊人久久| 西西大胆无码视频免费| 亚洲人成图片网站| 国产卡一卡二卡三免费入口 | 免费精品一区二区三区在线观看 | 黄色成人网站免费无码av| 91大神亚洲影视在线| 97青青草原国产免费观看| 亚洲男人电影天堂| 成年性午夜免费视频网站不卡| 亚洲AV无码专区国产乱码不卡| 日本高清免费aaaaa大片视频| 亚洲精品无码专区| mm1313亚洲精品国产| 黄色视屏在线免费播放| 亚洲av无码乱码国产精品fc2| 57pao国产成视频免费播放| 久久精品国产亚洲AV蜜臀色欲| 日韩一品在线播放视频一品免费| 激情吃奶吻胸免费视频xxxx| 久久久久亚洲?V成人无码| 男人都懂www深夜免费网站| 67194在线午夜亚洲| 四虎永久成人免费| 久久精品国产免费一区| 亚洲明星合成图综合区在线| 波多野结衣久久高清免费| 日韩一级片免费观看| 亚洲成人午夜在线| 免费鲁丝片一级观看| 国产久爱免费精品视频| 亚洲国产精品乱码在线观看97| 日本无卡码免费一区二区三区| 光棍天堂免费手机观看在线观看| 亚洲人成黄网在线观看 | 无码乱人伦一区二区亚洲一| 91免费精品国自产拍在线不卡| 成人福利在线观看免费视频|