<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\成功!



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 日韩视频免费在线| 在线精品亚洲一区二区三区| 亚洲AV色无码乱码在线观看| 亚洲AV永久无码精品一区二区国产| 三级黄色在线免费观看| 亚洲第一精品电影网| 亚洲人成网站免费播放| 一级毛片无遮挡免费全部| 亚洲色欲色欲www在线丝| 久久精品免费全国观看国产| 香港特级三A毛片免费观看| 亚洲人成77777在线播放网站| AA免费观看的1000部电影| jizz免费在线观看| 亚洲国产成人精品无码区在线秒播 | 24小时日本电影免费看| 国产亚洲精品AAAA片APP| 亚洲AV无码成人精品区在线观看| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 一级毛片在线完整免费观看| 亚洲免费在线视频播放| 亚洲情a成黄在线观看| 无码人妻精品中文字幕免费东京热| 老司机午夜性生免费福利| 亚洲图片激情小说| 亚洲熟女乱综合一区二区| 欧亚精品一区三区免费| a毛片免费播放全部完整| 亚洲AV色欲色欲WWW| 亚洲国产亚洲综合在线尤物| 国产L精品国产亚洲区久久| 性一交一乱一视频免费看| 四虎国产成人永久精品免费| 无码的免费不卡毛片视频| 色偷偷女男人的天堂亚洲网| 亚洲电影免费在线观看| 日日噜噜噜噜夜夜爽亚洲精品| 日本免费一二区在线电影| 曰曰鲁夜夜免费播放视频| 暖暖在线视频免费视频| 精品国产污污免费网站入口|