java复制文件夹_java文件操作实现文件夹复制

package testFile;

import java.io.*;

public class FileAndDirCopy {

//注意:任何文件(包括图片,音乐,影视,压缩文件等等)复制都要用字节流,字符流只能复制txt文档;

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

//复制开始时获得系统的当前时间

long start =System.currentTimeMillis();//记录开始运行时间单位为毫秒;

//要复制的目源(源目录)

File from=new File("D:\\");

//复制到的目录(目标目录)

File to=new File("E:\\");

System.out.println("正在复制,请稍后.......");

//调用复制方法

copy(from ,to);

//复制结束时获得系统时间

long end=System.currentTimeMillis();

System.out.println("复制完成!!!");

//从毫秒转成秒

System.out.println("总费时:"+(end-start)/1000.0+"秒");

}

/**

*

* @param from 要复制的目录

* @param to 复制到目录

* @throws Exception

*/

public static void copy(File from,File to) throws Exception{

//获得复制文件下下所有文件

File []fs=from.listFiles();

//遍历文件

for(int i=0;i

//如果是一个目录

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

//获得目录的名字

String dirname=fs[i].getName();

//创建要生成目录的绝对路径

String dirpath=to+"\\"+dirname;

File f=new File(dirpath);

//创建一个目录

f.mkdir();

//调用复制文件夹方法

copy(fs[i],f);

}else{

//获得文件名

String filename=fs[i].getName();

//获得的文件的绝对路径

String filepath=to+"\\"+filename;

//建好文件;

File f=new File(filepath);

//复制文件内容方法

copyFile(fs[i],f); //将原文件的内容复制到新文件里来;

}

}

}

/**

* //文件复制的方法

* @param from 要复制的文件

* @param to //复制到的文件

* @throws Exception

*/

public static void copyFile(File from ,File to) throws Exception{

//构建一个文件输入流对象

FileInputStream fin=new FileInputStream(from);

//构建以个文件输出流对象

FileOutputStream fout=new FileOutputStream(to);

//缓冲输入流

BufferedInputStream bin=new BufferedInputStream(fin);

//缓存输出流

BufferedOutputStream bout=new BufferedOutputStream(fout);

//定义个字节数组,作为输入流和输出流的中介

byte [] b=new byte[2048];

//读入的字节长度如果为-1,说明没有内容了

int len=bin.read(b);

while(len !=-1){

//将字节数组写入输出流中

bout.write(b,0,len);

len=bin.read(b);

}

//关闭流,注意顺序

bout.close();

fout.close();

bin.close();

fin.close();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值