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



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 永久免费观看的毛片的网站| 久久久久久一品道精品免费看| 免费阿v网站在线观看g| 国产成人精品日本亚洲| CAOPORN国产精品免费视频| 四只虎免费永久观看| 日本特黄特色AAA大片免费| 亚洲&#228;v永久无码精品天堂久久 | 粉色视频免费入口| 特级淫片国产免费高清视频| 亚洲人成色99999在线观看| 日韩中文字幕在线免费观看| 亚洲AV日韩AV一区二区三曲| 国产成人免费a在线视频app| 亚洲av无码专区在线观看亚| 日本特黄特色免费大片| 无码精品人妻一区二区三区免费| 深夜国产福利99亚洲视频| 一级毛片完整版免费播放一区| 亚洲裸男gv网站| 任你躁在线精品免费| 亚洲最大黄色网站| 67194成是人免费无码| 亚洲a∨无码一区二区| 亚洲人成影院在线无码观看| a级毛片免费在线观看| 青青草原精品国产亚洲av| 日本免费人成在线网站| 亚洲精品无码成人| 国产成人高清亚洲| 91精品国产免费| 亚洲成aⅴ人片久青草影院按摩| 亚洲VA综合VA国产产VA中| 今天免费中文字幕视频| 亚洲一区在线视频观看| 免费A级毛片在线播放不收费| 美女网站在线观看视频免费的| 亚洲网站视频在线观看| 永久免费av无码网站大全| 国产三级在线免费观看| 亚洲AV无码乱码在线观看代蜜桃|