`
lg_asus
  • 浏览: 184184 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

目录递归拷贝(java)

 
阅读更多
public class Test4 {
	private static long totalSize = 0;
	public static void main(String...args) throws IOException{
		File f1 = new File("E:\\TDDOWNLOAD");
		File f2 = new File("E:\\TDDOWNLOAD2");
		long start = System.currentTimeMillis();
		copy(f1, f2);
		long end = System.currentTimeMillis();
		System.out.println("拷贝总大小:"+totalSize*1.0/1024/1024+"(MB), time: "+(end-start));
	}
	
	public static void copy(File f1, File f2) throws IOException{
		//如果目标不是目录,直接退出
		if(!f2.isDirectory()){
			return ;
		}
		//源文件是目录,循环所有子文件
		if(f1.isDirectory()){
			File[] subFiles = f1.listFiles();
			for(int i=0;i<subFiles.length;i++){
				String newFileName = f2.getPath()+"/"+subFiles[i].getName();
				File newFile = new File(newFileName);
				//子文件是目录则递归拷贝
				if(subFiles[i].isDirectory()){
					if(!newFile.exists()){
						newFile.mkdir();
					}else{
					}
					copy(subFiles[i], newFile);
				}else{//子文件是文件,则直接拷贝
					copy(subFiles[i],f2);
				}
			}
		}else{//源文件是文件直接拷贝
			String newFileName = f2.getPath()+"/"+f1.getName();
			File newFile = new File(newFileName);
			//是否覆盖拷贝
			/*if(newFile.exists()){
				return ;
			}*/
			newFile.createNewFile();
			FileInputStream fis = new FileInputStream(f1);
			BufferedInputStream bis = new BufferedInputStream(fis, 8192);
			FileOutputStream fos = new FileOutputStream(newFileName);
			BufferedOutputStream bos = new BufferedOutputStream(fos,8192);
			byte[] b = new byte[8192];
			int count = -1;
			while((count=bis.read(b))!=-1){
				totalSize+=count;
				bos.write(b,0,count);
			}
			bis.close();
			bos.close();
			fis.close();
			fos.close();
		}
	}
}
分享到:
评论

相关推荐

    java 递归拷贝文件显示进度demo

    由于项目需求,写了个递归拷贝目录下全部文件的demo,并且显示进度,如果子目录不存在则创建。欢迎下载!

    动力节点_Java基础视频教程189_IO-递归拷贝

    动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础语法、Java的面向对象。每一个知识点都讲解的非常细腻,由浅入深。适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础...

    java-copy-files:定时递归复制文件java脚本,包括源代码,文档和shell脚本

    java-byby-demo 定时递归复制文件Java脚本,包括源代码,文档和Shell脚本。 定时递归拷贝文件的Java脚本,内附原始文件,文档和shell脚本。

    java源码包---java 源码 大量 实例

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视  用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java...

    Java虚拟机(JVM)面试题(总结最全面的面试题!!!)

    Java虚拟机(JVM)面试题(总结最全面的面试题!!!) 文章目录Java内存模型我们开发人员编写的Java代码是怎么让电脑认识的为什么说java是跨平台语言Jdk和Jre和JVM的...深拷贝和浅拷贝Java会存在内存泄漏吗?请说 收

    FileUploadUtil.java(文件上传工具类)

    删除文件夹,递归删除目录下的所有文件及子目录下所有文件,函数名:getFile 作用:使用递归,输出指定文件夹内的所有文件 参数:path:文件夹路径 前置空格缩进,显示文件层次结构,通过文件名称获取导入文件到temp...

    JAVA上百实例源码以及开源项目

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视  用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java...

    JAVA上百实例源码以及开源项目源代码

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视  用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java...

    java源码包4

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视  用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 ...

    java源码包3

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视  用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 ...

    java源码包2

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视  用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 ...

    FTP递归扫描文件到本地代码(Java)

    实现从ftp服务器某一目标文件夹开始入口,扫描所有子文件夹和子文件夹下的文件,如果存在文件,则拷贝至本地某目录下,并删除FTP服务器上该文件。如果不存在文件,则删除该文件夹,但是入口目标文件夹不删除。

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    JAVA基础课程讲义

    递归结构 49 本章作业 50 本章上机操作 51 第三章 JAVA面向对象程序开发 52 编程语言发展史 52 类和对象是如何产生发展的?如何进化的? 52 面向对象思想初步(OOP初步Object Oriented Programming) 53 面向对象编程的...

    Java语言基础下载

    拷贝数组 80 内容总结 83 独立实践 84 第六章:继承 86 学习目标: 86 单继承(single inheritance) 87 访问控制 89 方法重载(method overloading) 91 方法覆盖(method overriding) 93 基于继承的多态实现 94 隐藏...

    java 算法

    简介:这份资源是我以前偶然...递归,拷贝一个目录或者文件到指定路径下,简单的txt转换xml,字母排序(A-Z)(先大写,后小写),列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤,字符串匹配的算法,写入日志。

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

Global site tag (gtag.js) - Google Analytics