`
lg_asus
  • 浏览: 191811 次
  • 性别: 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

    在Java编程中,递归拷贝文件是一种常见操作,特别是在处理目录结构时。这个"java 递归拷贝文件显示进度demo"是一个实用的示例,它不仅实现了从一个源目录到目标目录的深度拷贝,而且还提供了进度显示功能,这对于...

    文件夹递归拷贝及跨数据库表间拷贝

    在文件系统中,递归拷贝通常用于复制整个目录结构,包括其下的所有子目录和文件。这在备份、迁移或同步文件时非常有用。例如,你可以编写一个脚本或程序,它遍历指定的源文件夹,对于每个子文件夹,都执行相同的操作...

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

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

    java实现一个目录下全部文件复制到另一目录

    在Java编程语言中,复制一个目录下的所有文件到另一个目录是一项常见的任务,特别是在处理文件系统操作时。这个过程涉及到文件的遍历、读取和写入。以下将详细讲解如何实现这一功能,以及相关的Java API和技术点。 ...

    使用java反射机制实现java的深拷贝

    在Java编程中,深拷贝和浅拷贝是两种常见的对象拷贝方式。它们主要区别在于,浅拷贝仅复制对象本身,而不复制它引用的对象;而深拷贝则会递归地复制对象及其所有引用的对象。在某些情况下,如需要完全独立的副本时,...

    计算机软件-商业源码-实例092-目录的拷贝操作.zip

    在Java中,可以利用`java.nio.file`包下的`Files`类提供的`copy()`方法配合递归实现。在C++中,可以使用Boost库的`boost::filesystem`来实现目录的拷贝。 对于商业源码,这意味着代码可能包含了版权保护、许可协议...

    java值拷贝

    深拷贝则不仅复制对象本身,还会递归复制所有引用的对象,确保两个对象完全独立。 Apache Commons BeanUtils库中的`BeanUtils.copyProperties()`方法就是用来进行对象间属性值的浅拷贝。这个方法可以将一个对象的...

    java文件夹的拷贝

    综上所述,Java文件夹的拷贝涉及了文件系统的操作、文件和目录的遍历、文件的读写与复制等多个知识点。`copyFile.java`源码文件为我们提供了一个基础的实现,通过理解和扩展这个代码,我们可以根据实际需求构建更...

    Java 浅拷贝性能比较完整源码

    然而,需要注意的是,浅拷贝的性能通常比深拷贝快,因为深拷贝需要递归复制所有嵌套的对象。但性能的差异可能取决于对象的复杂性和实际的硬件环境。 在使用Java进行对象拷贝时,需要根据业务需求选择合适的拷贝策略...

    java 深度拷贝 复制 深度复制.zip

    在Java编程中,深度拷贝和浅拷贝是两种重要的对象复制方式,它们涉及到对象的内存管理和内存结构的复制。本篇文章将详细讲解如何利用Java的反射机制实现深度拷贝,以及这种方式的优点和注意事项。 首先,理解深度...

    java List 深度复制方法

    浅复制只复制对象本身,而不复制它引用的对象,而深复制则会递归复制所有引用的对象。这篇博客将探讨如何在Java中对List进行深度复制。 首先,我们来理解一下什么是浅复制和深复制。在Java中,当我们使用`clone()`...

    3、HDFS的使用(读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件

    为了高效地与HDFS交互,Java API 提供了一套丰富的工具和类库,使得开发者能够方便地进行文件的读写、上传、下载、遍历、查找、拷贝以及管理HDFS上的文件和目录。以下将详细讲解如何使用Java API 操作HDFS。 ### 一...

    Java中的深拷贝(深复制)和浅拷贝(浅复制) 示例代码

    深拷贝不仅复制对象的属性值,还对引用类型的字段进行递归复制,确保新对象拥有独立的内存空间,即使原始对象的引用字段被修改,也不会影响深拷贝的对象。深拷贝可以通过序列化和反序列化实现,或者手动实现...

    java不同对象及集合的多次复制

    - **深拷贝**:创建一个全新的对象,不仅复制对象本身,还递归复制其内部引用的所有对象。这样,两个对象完全独立,互不影响。 2. **Java中的对象复制方法** - **clone()方法**:Java的Object类提供了一个`clone...

    线程池拷贝显示树状图.zip

    要构建树状图,可以采用递归方式,对于每个目录,递归调用自身来处理子目录,并使用图形界面(如Swing或JavaFX)展示层次结构。 4. **文件IO操作**: 文件I/O是系统编程的基础,Java提供丰富的API来处理文件。除了...

    Java中的深拷贝(深复制)和浅拷贝(浅复制)介绍

    如果`Professor`类有其他复杂类型的字段,如自定义对象,那么还需要在`clone()`方法中实现递归拷贝,以确保所有嵌套的对象都被深拷贝。 深拷贝和浅拷贝的选择取决于具体的需求。如果希望复制的对象与原始对象完全...

    java 遍历文件目录

    下面将详细介绍如何在Java中遍历文件目录,以及如何利用流方式拷贝文件。 首先,我们可以使用`java.io.File`类来代表文件和目录,并执行基本的文件操作。要遍历一个目录,可以使用`File`类的`list()`或`listFiles()...

    文件夹拷贝

    - 对于子目录,我们需要递归调用拷贝文件夹的函数,将子目录作为新的源路径。 以下是一个简化的代码示例,展示了如何使用Java进行文件夹拷贝: ```java import java.io.File; import java.io.IOException; import...

    java合并两个文件夹内容

    在IT行业中,尤其是在Java编程和运维领域,有时候我们需要对文件系统进行操作,比如合并两个文件夹的内容。这个任务可以通过编写脚本来实现,特别是在自动化运维流程中。本文将深入探讨如何使用Java来完成这个任务,...

    拷贝文件及文件夹(封装工具类)

    在Java编程中,高效地处理文件和目录的拷贝是一项常见的任务。为了简化这一过程,开发者经常选择将拷贝操作封装成工具类,以便在项目中便捷地复用。本篇将详细介绍如何创建一个用于拷贝文件及文件夹的工具类,并探讨...

Global site tag (gtag.js) - Google Analytics