A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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);
                }
        }
}



8 个回复

倒序浏览
测试了复制了一个3.8G的文件,就是时间长了点
回复 使用道具 举报
如果有时候赋值的文件太大的话可以会出异常。递归过深。
回复 使用道具 举报
dubei1993 来自手机 中级黑马 2016-6-20 00:06:50
板凳
是的,我查找文件夹下所有jpg,一共有几百张,就出问题了。
回复 使用道具 举报
dubei1993 来自手机 中级黑马 2016-6-20 00:08:04
报纸
服你了。代码不对。len代表读取子节的长度,write写缓冲区没长度,错
回复 使用道具 举报
dubei1993 发表于 2016-6-20 00:08
服你了。代码不对。len代表读取子节的长度,write写缓冲区没长度,错

我这个是单层的文件夹,没有递归反复调用
回复 使用道具 举报
dubei1993 发表于 2016-6-20 00:08
服你了。代码不对。len代表读取子节的长度,write写缓冲区没长度,错

确实参数应该是len,没注意
回复 使用道具 举报
安静的喝会奶 发表于 2016-6-22 09:06
确实参数应该是len,没注意

bos.write(bytes,0,len);而且没有把系统资源关闭,那天着急下班发了就走了
回复 使用道具 举报
L1ub0w3n 发表于 2016-6-19 22:56
如果有时候赋值的文件太大的话可以会出异常。递归过深。

不好意思,确实代码有点问题,那天没怎么看,这样最后一次传递的数据会有部分字节重复
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马