Java字节流实现文件夹的拷贝
Posted qfjavabd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java字节流实现文件夹的拷贝相关的知识,希望对你有一定的参考价值。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
· java字节流实现文件夹的拷贝
· 拷贝文件夹,其中文件夹中又有多个文件
· 1.先遍历这个文件夹,判断是否是目录
· 2.创建文件夹
· 3.拷贝文件到新的地方
· */
public class FileDirectoryCopyDemo {
//遍历文件夹
public static void copy(File srcDir,File destDir){
//遍历srcDir文件夹
File[] list=srcDir.listFiles();
for(File f:list){
//先判断是否是目录,在目录文件夹里创建一个子目录
if(f.isDirectory()){
String name=f.getName(); //获取目录的名字
//调用方法去目录文件夹里创建子目录
File newDestDir=makeDir(destDir,name);
//递归
copy(f,newDestDir);
}else{
//如果不是目录,就拷贝文件
File dest=new File(destDir,f.getName());
fileCopy(f,dest);
}
}
}
public static File makeDir(File parent,String name){
File f=new File(parent,name);
f.mkdir();//创建文件夹
return f;
}
//文件拷贝函数
public static void fileCopy(File src,File dest){
InputStream in=null; //输入流,负责读文件
OutputStream out=null; //输出流,负责写入文件
try{
in=new FileInputStream(src);
out=new FileOutputStream(dest);
long start=System.currentTimeMillis();
//定义缓冲区
byte[] buffer=new byte[1024];
int len=-1;
· while((len=in.read(buffer))!=-1)//说明还没有读到文件的结尾
· {
· out.write(buffer,0,len); //输出流写入一个字节
· }
· long end=System.currentTimeMillis();
· //文件夹下有几个文件就耗时几次
· System.out.println(拷贝文件耗时:+(end-start)+毫秒);
· }catch(Exception e){
· e.printStackTrace();
· }finally{
· try {
· in.close();
· out.close();
· } catch (IOException e) {
· // TODO Auto-generated catch block
· e.printStackTrace();
· }
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//拷贝之前的原文件 haha是个文件夹
File src=new File(D:+File.separator+haha);
//拷贝之后的文件
File dest=new File(F:+File.separator+haha);
if(!dest.exists()){
dest.mkdir(); //创建文件夹
}
copy(src,dest);
}
}
?
以上是关于Java字节流实现文件夹的拷贝的主要内容,如果未能解决你的问题,请参考以下文章