黑马程序员技术交流社区

标题: 复制文件夹里面的全部内容 [打印本页]

作者: 安静的喝会奶    时间: 2016-6-19 17:01
标题: 复制文件夹里面的全部内容
import java.util.*;
import java.io.*;
class  CopyFile
{
        public static void main(String[] args) throws Exception
        {
                File file = new File("E:\\迅雷下载");
                File destFile = new File("F:\\迅雷下载");
                if(!destFile.exists())
                {
                        destFile.mkdir();
                }
                copyFile(file,destFile);
                System.out.println("传输完成");
        }
        private static void copyFile(File srcFile,File destFile) throws Exception
        {
                File[] files = srcFile.listFiles();
                for(File file:files)
                {
                        String srcFileName = file.getName();
                        File aDestFile = new File(destFile,srcFileName);
                        copy(file,aDestFile);
                }
        }
        private static void copy(File file,File destFile) throws Exception
        {
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
                int len = 0;
                byte[] bytes = new byte[1024];
                while((len=bis.read(bytes))!=-1)
                {
                        bos.write(bytes);
                }
        }
}




作者: 安静的喝会奶    时间: 2016-6-19 17:04
测试了复制了一个3.8G的文件,就是时间长了点
作者: L1ub0w3n    时间: 2016-6-19 22:56
如果有时候赋值的文件太大的话可以会出异常。递归过深。
作者: dubei1993    时间: 2016-6-20 00:06
是的,我查找文件夹下所有jpg,一共有几百张,就出问题了。
作者: dubei1993    时间: 2016-6-20 00:08
服你了。代码不对。len代表读取子节的长度,write写缓冲区没长度,错
作者: 安静的喝会奶    时间: 2016-6-22 09:04
dubei1993 发表于 2016-6-20 00:08
服你了。代码不对。len代表读取子节的长度,write写缓冲区没长度,错

我这个是单层的文件夹,没有递归反复调用
作者: 安静的喝会奶    时间: 2016-6-22 09:06
dubei1993 发表于 2016-6-20 00:08
服你了。代码不对。len代表读取子节的长度,write写缓冲区没长度,错

确实参数应该是len,没注意
作者: 安静的喝会奶    时间: 2016-6-22 09:09
安静的喝会奶 发表于 2016-6-22 09:06
确实参数应该是len,没注意

bos.write(bytes,0,len);而且没有把系统资源关闭,那天着急下班发了就走了
作者: 安静的喝会奶    时间: 2016-6-22 09:15
L1ub0w3n 发表于 2016-6-19 22:56
如果有时候赋值的文件太大的话可以会出异常。递归过深。

不好意思,确实代码有点问题,那天没怎么看,这样最后一次传递的数据会有部分字节重复




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2