将文件夹d:/sxtjava下面所有文件和子文件夹内容到d:/sxtjava2。

将文件夹d:/sxtjava下面所有文件和子文件夹内容到d:/sxtjava2。

提示:涉及单个文件复制、目录的创建、递归的使用。

public class CopyDir {

         /**

          * 复制单个文件

          * @param sourceFile 源文件

          * @param targetFile 目标文件

          * @throws IOException

          */

    public static void copyFile(File sourceFile, File targetFile) throws IOException {

        BufferedInputStream inBuff = null;

        BufferedOutputStream outBuff = null;

        try {

            // 新建文件输入流

            inBuff = new BufferedInputStream(new FileInputStream(sourceFile));

            // 新建文件输出流

           outBuff = new BufferedOutputStream(new FileOutputStream(targetFile));

            // 缓冲数组

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

            int len;

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

                outBuff.write(b, 0, len);

            }

            // 刷新此缓冲的输出流

            outBuff.flush();

        } finally {

            // 关闭流

            if (inBuff != null)

                inBuff.close();

            if (outBuff != null)

                outBuff.close();

        }

    }

   

    /**

     * 复制目录

     * @param sourceDir 源目录

     * @param targetDir 目标目录

     * @throws IOException

     */

public static void copyDirectiory(String sourceDir, String targetDir)

throws IOException {

        // 检查源目录

             File fSourceDir = new File(sourceDir);

             if(!fSourceDir.exists() || !fSourceDir.isDirectory()){

                       System.out.println("源目录不存在");

                       return;

             }           

             //检查目标目录,如不存在则创建

             File fTargetDir = new File(targetDir);

             if(!fTargetDir.exists()){

                       fTargetDir.mkdirs();

             }                    

        // 遍历源目录下的文件或目录

        File[] file = fSourceDir.listFiles();

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

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

                // 源文件

                File sourceFile = file[i];

                // 目标文件

                File targetFile = new File(fTargetDir, file[i].getName());

                copyFile(sourceFile, targetFile);

            }           

            //递归复制子目录

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

                // 准备复制的源文件夹

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

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

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

                // 复制子目录

                copyDirectiory(subSourceDir, subTargetDir);

            }

        }

    }

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

             copyDirectiory("d:/sxtjava","d:/sxtjava2");

         }

}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值