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

使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Silverlight 2.5D RPG游戏技巧与特效处理:(十六)动态资源

即开即玩是网页游戏相比传统客户端游戏的最大优势。如果说在每台电脑安装上G的客户端是一种资源浪费及时间污染&#xff1b;那么Silverlight作为RIA界的新宠儿&#xff0c;在继承祖辈优秀血统的前提下拥有更加卓越的性能及更为曼妙的动态表现&#xff0c;势将引领网络未来世界进…

python pp模块_Python模块--Pexpect

探索 Pexpect&#xff0c;第 1 部分&#xff1a;剖析 Pexpect概述Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现&#xff0c;是一个用来启动子程序&#xff0c;并使用正则表达式对程序输出做出特定响应&#xff0c;以此实现与其自动交互的 Python 模块。 Pexpect 的使…

mysql root密码忘记2018_2018-03-28设置及修改mysql用户密码学习笔记

退出mysql方法quit或者exit设置及修改mysqlroot用户密码安装mysql后&#xff0c;默认管理员root密码为空&#xff0c;这很不安全&#xff0c;需要设置一个密码&#xff0c;在安装mysql单实例后&#xff0c;有个初始优化的一些安全措施&#xff1a;为root设置了密码删除无用的my…

如何机智的弄坏一台电脑?

全世界只有3.14 % 的人关注了爆炸吧知识原文&#xff1a;http://litten.me/2015/07/06/hack-in-localstorage/作者&#xff1a;Litten很多人都在说&#xff1a;“技术领域当中&#xff0c;前端最没有技术含量&#xff0c;且容易被替代。”有人说&#xff0c;前端的能力界限顶多…

局域网屏幕监控软件

选择一款好的局域网屏幕监控软件要注意哪些问题&#xff1f;相信这是很多企业老板、网管都关心的问题之一。网上各种监控软件那么多&#xff0c;万一下载一个不好用的软件&#xff0c;不仅浪费的是时间&#xff0c;甚至因为软件稳定性不好&#xff0c;影响员工工作效率就不好了…

android 学习查阅笔记

给自己一个链接地址方便找http://www.cnblogs.com/TerryBlog/archive/2010/06/25/1764821.htmlAndroid与IIS身份验证——基本验证http://www.cnblogs.com/GoodHelper/archive/2011/08/17/android_iis_01.html转载于:https://www.cnblogs.com/yjrl/archive/2011/08/14/2137692.h…

pythonlive2d_Unity-Live2D资源载入

在Live2d上下载的资源模型是.cmox格式的&#xff0c;无法直接在unity内使用&#xff0c;需要在Cubism中导出成.moc文件。1.将下载的.cmox资源直接拖入Cubism2.导出的时候有2.0版本和3.0版本的&#xff0c;如图随便哪个版本都OK&#xff0c;这里2.0和3.0的区别是&#xff0c;3.0…

C#为什么会这么慢之命运之终章-真理篇for firelong

firelong我真得希望你来看一看&#xff0c;可惜上一篇你错过了。c#会这么慢的话题却是始终充满着火药味&#xff0c;也许说真话真的很不动听&#xff0c; 可能上次的帖子firelong没看到&#xff0c;讨论C#哪能错过微软&#xff0c;.NET战略是微软当年的号称终极兵器的究级必杀技…

mysql 备份 master_如何配置MYSQL的MASTER---SLAVE复制备份?

一、配置一个mysql服务器做master&#xff1a;在配置文件my.ini中添加如下内容&#xff1a;log-binmatster-binlog-bin-indexmatster-bin.indexserver-id1master必须有一个活动的二进制日志和唯一的server-id,然后重启mysql服务器。其次&#xff0c;以root登录&#xff0c;创建…

豆瓣评分9分+,这6部经典趣味数学纪录片堪称神作!

全世界只有3.14 % 的人关注了爆炸吧知识数学是研究数量、结构、变化以及空间模型等概念的一门学科。透过抽象化和逻辑推理的使用&#xff0c;由计数、计算、量度和对物体形状及运动的观察中产生。数学家们拓展这些概念&#xff0c;为了公式化新的猜想以及从合适选定的公理及定义…

C++游戏开发需要阅读的书籍

如果要自学游戏程序开发的话&#xff0c;可以看看下面的&#xff0c;呵呵。 游戏开发资料&#xff08;PDF书都是中文版的&#xff0c;非英文&#xff0c;很多是本人自己扫描制作&#xff0c;从未网上发布过&#xff0c;所以独家啦&#xff09;&#xff1a; 1、Gamebryo 2.2游…

32位hex转浮点 python_python——int()、hex()、oct()、bin()、float()数值类型转换函数

摘要&#xff1a;在python中&#xff0c;数值类型转换函数常用的有浮点型float()、取整int()、八进制oct()、二进制bin()、十六进制hex()这五个函数。单词float的意思就是浮动的意思&#xff1b;int是单词integer整数的前三个字母&#xff1b;oct是单词八进制octal的前三个字母…

C语言运算符优先级 详细列表

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 &#xff08;表达式&#xff09;/函数名(形参表) . 成员选择&#xff08;对象&#xff09; 对象.成员名 -> 成员选择&#xff08;指针&#xff09; …

我的闪存

快速记录平时需要保存的知识点。博客园的闪存&#xff0c;能输入的内容不丰富&#xff0c;比如不能贴代码。

随机加解密java_JAVA随机数生成 Math.random和java.util.Random使用简介

一、Math.random1Math.random内部使用java.util.Random实现2 直接调用Math.random是产生一个[0&#xff0c;1)之间的随机数public static void testMathRandom() {System.out.println(Math.random());System.out.println(Math.random());}输出&#xff1a;0.97584820103710910.…

找对象不能只看TA的外表

1 别人家的小奶猫简直太萌了&#xff01;2 你为什么抱它不抱我-我不高兴&#xff01;3 这设计怎么讲4 垃圾桶是新的穿越道具&#xff01;5 找对象不能只看TA的外表6 一下都不知道要干嘛了7 在评论区大声告诉我你点的每个赞&#xff0c;我都认真当成了喜欢

locate: database too small: /var/db/locate.databas

问题&#xff1a;在freebsd下运行出现错误&#xff1a; locate: database too small: /var/db/locate.databas 解决&#xff1a;#/usr/libexec/locate.updatedb转载于:https://blog.51cto.com/ahwind/341486

一文说通异步 LINQ

用不好异步 LINQ&#xff0c;基本上就等于用不好 LINQ 了。LINQ 这个东西&#xff0c;出来很早了&#xff0c;写过几年代码的兄弟们&#xff0c;或多或少都用过一些。早期的 LINQ&#xff0c;主要是同步的&#xff0c;直到 C# 8.0 加入 IAsyncEnumerable&#xff0c;LINQ 才真正…

HDU_1541 Stars(树状数组)

poj上1A&#xff0c; HDU上6A&#xff0c;我晕啊&#xff01;注意几点&#xff1a; 1、多组数据&#xff1b; 2、memset(c, 0, siezeof(c)); 3、memset(ans, 0, sizeof(ans)); my code: View Code #include <stdio.h>#include <string.h>#define N 32010int c[N],…

点击ride界面edit空白_『技术锦囊』如何在SOLIDWORKS界面调用宏程序?

SOLIDWORKS宏程序为广大设计开发者提供了非常便捷的开发环境&#xff0c;合理的使用宏程序除了可以节约时间还可以减少很多不必要的操作&#xff0c;例如一键替换图纸等。此次便与大家讲讲&#xff0c;如何在SOLIDWORKS界面调用宏程序。操作流程1、任意开启一张工程图图纸&…