视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
java中复制文件或文件夹实现
2025-10-02 04:42:32 责编:小OO
文档
Java中实现复制文件或文件夹

 

    拷贝一个文件的算法比较简单,当然,可以对它进行优化,比如使用缓冲流,提高读写数据的效率等。但是在复制文件夹时,则需要利用Flie类在目标文件夹中创建相应的目录,并且使用递归方法。

import java.io.*; 

/** 

 * 复制文件夹或文件夹 

 */ 

public class CopyDirectory { 

    // 源文件夹 

    static String url1 = "f:/photos"; 

    // 目标文件夹 

    static String url2 = "d:/tempPhotos"; 

    public static void main(String args[]) throws IOException { 

        // 创建目标文件夹 

        (new File(url2)).mkdirs(); 

        // 获取源文件夹当前下的文件或目录 

        File[] file = (new File(url1)).listFiles(); 

for (int i = 0; i < file.length; i++) {

            if (file[i].isFile()) { 

                // 复制文件 

                copyFile(file[i],new File(url2+file[i].getName())); 

            } 

            if (file[i].isDirectory()) { 

                // 复制目录 

                String sourceDir=url1+File.separator+file[i].getName(); 

                String targetDir=url2+File.separator+file[i].getName(); 

                copyDirectiory(sourceDir, targetDir); 

            } 

        } 

    } 

// 复制文件 

public static void copyFile(File sourceFile,File targetFile)  

throws IOException{ 

        // 新建文件输入流并对它进行缓冲 

        FileInputStream input = new FileInputStream(sourceFile); 

        BufferedInputStream inBuff=new BufferedInputStream(input); 

        // 新建文件输出流并对它进行缓冲 

        FileOutputStream output = new FileOutputStream(targetFile); 

        BufferedOutputStream outBuff=new BufferedOutputStream(output); 

         

        // 缓冲数组 

        byte[] b = new byte[1024 * 5]; 

        int len; 

        while ((len =inBuff.read(b)) != -1) { 

            outBuff.write(b, 0, len); 

        } 

        // 刷新此缓冲的输出流 

        outBuff.flush(); 

         

        //关闭流 

        inBuff.close(); 

        outBuff.close(); 

        output.close(); 

        input.close(); 

    } 

    // 复制文件夹 

    public static void copyDirectiory(String sourceDir, String targetDir) 

            throws IOException { 

        // 新建目标目录 

        (new File(targetDir)).mkdirs(); 

        // 获取源文件夹当前下的文件或目录 

        File[] file = (new File(sourceDir)).listFiles(); 

for (int i = 0; i < file.length; i++) {

            if (file[i].isFile()) { 

                // 源文件 

                File sourceFile=file[i]; 

                // 目标文件 

               File targetFile=new  

File(new File(targetDir).getAbsolutePath() 

+File.separator+file[i].getName()); 

                copyFile(sourceFile,targetFile); 

            } 

            if (file[i].isDirectory()) { 

                // 准备复制的源文件夹 

                String dir1=sourceDir + "/" + file[i].getName(); 

                // 准备复制的目标文件夹 

                String dir2=targetDir + "/"+ file[i].getName(); 

                copyDirectiory(dir1, dir2); 

            } 

        } 

    } 

下载本文

显示全文
专题