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字节流实现文件夹的拷贝的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记6.1.3 字节流 - 字节流缓冲区与缓冲字节流

[JAVA]字节流拷贝文件

[JAVA]使用字节流拷贝文件

java IO流文件拷贝文件(字节流标准写法)

java 字符流 字节流

java I/O流详解