使用java程序实现了对文件夹的复制功能:

package demo.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.Date;

public class TestIo {
 public static float length = 0; 
 s public  void isFile(File f ,String dir) throws IOException{ //使用递归的方法遍历该目录下的所有文件和文件夹
  File[] farry = f.listFiles(); //得到该文件夹下的所有目录和文件
  for(int i=0;i<farry.length;i++){
   String fileName = farry[i].getName();
   String filePath = farry[i].getPath();
   String path = changPath(filePath);   //将路径中的\替换为/
   String newPath = newPath(path, dir);   //建立目标文件路径
   if(farry[i].isDirectory()){  //判断是否是目录文件
    boolean b = createFile(newPath);  //创建与该文件夹同名的目标文件中的文件夹 创建成功返回true失败返回false
    System.out.println(fileName);
       System.out.println(filePath);
       System.out.println(newPath);
       System.out.println(b);
    System.out.println("目录名:"+farry[i].getName() +" : 路径: "+farry[i].getPath());  //打印该目录的名称和路径
    isFile(farry[i],dir);        //递归调用该方法
   }else{  //如果不是目录文件复制该文件到指定的路径上
    copyFile(path, newPath); //将该文件复制到目标文件夹中
    totalLength(farry[i].length()/1024);
    System.out.println("文件名:"+farry[i].getName()+" :路径: "+farry[i].getPath()+" : 文件大小:"+farry[i].length()/1024+"KB");
   }
   
   
  }
  
 }
 
 public String changPath(String path){  //修改路径
  path = path.replace("\\","/");
  return path;
 }
 public String newPath(String path,String dir){  //创建新的目录地址
  String newPath = path.substring(path.indexOf(":")+1);
  newPath = dir+newPath;
  return newPath;
 }
 public boolean createFile(String path) throws IOException{   //创建文件夹
  File f = new File(path);
  boolean flag = false;
  // f.createNewFile();
  flag =  f.mkdir();
  if(f.isDirectory()){
   flag = true;
  }
  return flag;
 }
 public void copyFile(String inPath,String outPath){ //复制文件夹中的文件到目标文件夹
  try {
   BufferedReader br = new BufferedReader(new FileReader(inPath));
   BufferedWriter bw = new BufferedWriter(new FileWriter(outPath));
   String len = br.readLine();
   while (len != null) {
    bw.write(len);
    len = br.readLine();
   }
   br.close();  //关闭输入流
   bw.close();  //关闭输出流
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 public void firstCopy(File f, String dir){  //在复制之前建立目标文件夹中的根目录 如果该文件不是文件夹则直接复制该文件
  String path = f.getPath();
  path = changPath(path);
  String newPath = newPath(path, dir);
  if(f.isDirectory()){
   try {
    boolean flag = createFile(newPath);
    isFile(f,dir); //遍历该文件夹
   } catch (IOException e) {
    // TODO Auto-generated catch block
    System.out.println("路径不正确");
    e.printStackTrace();
   }
  }else{ //不是文件夹则直接复制该文件
   copyFile(path, newPath);
  }
  
 }
 public float totalLength(float f){ //计算该文件夹中所有文件的总长度
  length = length+f;
  return length;
 };
 public static void main(String[] args) throws IOException {
 
  TestIo t = new TestIo();
  Date date = new Date();
  long start = 0;
  long end = 0;
  start = date.getTime();
     File f = new File("F:/11");  //需要拷贝的文件或文件夹路径
     t.firstCopy(f, "E:/22");         //目标路径
     Date d2 = new Date();
     end = d2.getTime();
     System.err.println("总用时为:"+(end-start));
     System.err.println("复制文件的总大小为:"+length/1024+" MB");
    // t.doCopy2();
 }

}

遍历是使用递归实现

注释写的挺详细的,相信大家直接看注释也看以看的差不多,如果有什么疑问可以随时提出,方便大家一起交流。

转载于:https://www.cnblogs.com/vTree/archive/2011/08/12/2136157.html

复制一个文件夹中的所有文件和文件夹的java程序实现相关推荐

  1. Python查找文件夹中含有指定关键字的文件

    查找文件夹中含有指定关键字的文件,并将该文件复制到另一个文件夹中 ''' 查找文件夹中含有指定关键字的文件,并将该文件复制到另一个文件夹中 ''' import os import shutildef ...

  2. 实战:从文件夹中庞大的excel(.xlsx)文件中提取并整合数据

    从文件夹中庞大的excel(.xlsx)文件中提取并整合数据 Input 需要从文件夹树中提取有格式的单个数据格并汇总. 例如: 2017-2020x市蚊虫数据/2018/7月/abcds方法统计.x ...

  3. python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退

    问题描述: python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退,并提示no module named 'pyproj.datadir' 解决方法: 闪退 ...

  4. c#文件名去掉后缀_C#如何从文件路径中分离出文件名以及文件扩展名

    在C#文件操作的过程中或者Asp.Net文件的处理过程中,有时候知道文件的完整路径信息后,需要从完整路径中分离出文件名以及文件的后缀名等信息,此文将简要介绍C#语言如何从文件路径中分离出文件名以及文件 ...

  5. debian 文件夹中文件大小_Linux下查看文件和文件夹大小 删除日志

    场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分析发现tomcat下面的logs目录占用了很大的空间,删除 ...

  6. python读取多个文件夹_如何从python中的文件夹中读取多个NetCDF文件

    我试图绘制多年(1979-2014)的平均温度图,我唯一的问题是尝试从文件夹中读取多个NetCDF(.nc)文件.目前我的程序将绘制单个文件,但我不明白如何使其读取文件夹中的所有文件(每年一个).我想 ...

  7. c语言 遍历文件夹中所有文件名,C# 遍历文件夹下所有子文件夹中的文件,得到文件名...

    假设a文件夹在F盘下,代码如下.将文件名输出到一个ListBox中 using System.Data; using System.Drawing; using System.Linq; using ...

  8. python从文件路径中提取文件名、所在文件夹

    需求 有的时候我们想从文件路径中提取出包含扩展的文件名,有的时候需要不包括扩展的文件名,还有的时候想要获取文件所在目录,在python中如何快速实现呢? 实现 我们有如下路径 D:\Worksheet ...

  9. python怎么批量移动文件_python中批量移动目录所有文件函数

    #encoding:utf-8 import os,sys import shutil from shutil import Error from shutil import copystat fro ...

  10. html做在线预览pdf文件,html中在线预览pdf文件之pdf在线预览插件

    html中在线预览pdf文件之pdf在线预览插件 最近遇到一个需求,要在html页面查看pdf生成的pdf文件! 翻来覆去找到两种办法 ,最后采用了jquery.media.js插件 方式一 将pdf ...

最新文章

  1. 艾伟_转载:.NET设计模式:观察者模式(Observer Pattern)
  2. Android Binder ProcessState IPCThreadState相关介绍
  3. github创建一个新的tag
  4. linux 关于目录的命令,Linux ---- 关于目录基本命令
  5. Scrum Master们,难道每天都在摸鱼?
  6. 前端必须懂的计算机网络知识—(XSS、CSRF和HTTPS)
  7. 中国IT业发展案例剖析之--豪杰解霸
  8. GAN 生成mnist数据
  9. PM2服务器启动nodejs项目
  10. 查看.pth文件里面保存了哪些权重及那些权重的shape
  11. 计算机鼠标能用键盘不能用,电脑键盘鼠标都不能用了,怎么回事?
  12. 阿里云企业邮箱的imap和pop3设置
  13. 有可控冷热水隔板的储水式电热水器
  14. [原][彩]情诗两首[下]--期对酒于襄阳,待重归于长江。
  15. 【您的凭据不工作】win7远程桌面提示,请输入新凭据。登录没有成功
  16. 清洁机器人--屏幕显示之OLED屏和LCD屏的区别
  17. IDEA必装插件-Gyro
  18. sudo修改文件夹名字_linux
  19. savour 钱包开发者招募
  20. 【码上实战】【立体匹配系列】经典AD-Census: (3)代价计算

热门文章

  1. 自学前端的高效学习路线.avi
  2. 【收集】C#一些基础的面试题
  3. http请求中的Query String Parameters、Form Data、Request Payload
  4. java 中 if与while的区别
  5. houseparty不流畅_重新设计Houseparty –用户体验案例研究
  6. Vue 是如何用 Rollup 打包的?
  7. Node.js 框架设计及企业 Node.js 基础建设相关讨论
  8. Node.js 开发者 2020 年度报告
  9. 算法:把数组排成最小的数
  10. vue的移动app项目中,自定义拖拽指令的问题