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编程中,递归拷贝文件是一种常见操作,特别是在处理目录结构时。这个"java 递归拷贝文件显示进度demo"是一个实用的示例,它不仅实现了从一个源目录到目标目录的深度拷贝,而且还提供了进度显示功能,这对于...
在文件系统中,递归拷贝通常用于复制整个目录结构,包括其下的所有子目录和文件。这在备份、迁移或同步文件时非常有用。例如,你可以编写一个脚本或程序,它遍历指定的源文件夹,对于每个子文件夹,都执行相同的操作...
动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础语法、Java的面向对象。每一个知识点都讲解的非常细腻,由浅入深。适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础...
在Java编程语言中,复制一个目录下的所有文件到另一个目录是一项常见的任务,特别是在处理文件系统操作时。这个过程涉及到文件的遍历、读取和写入。以下将详细讲解如何实现这一功能,以及相关的Java API和技术点。 ...
在Java编程中,深拷贝和浅拷贝是两种常见的对象拷贝方式。它们主要区别在于,浅拷贝仅复制对象本身,而不复制它引用的对象;而深拷贝则会递归地复制对象及其所有引用的对象。在某些情况下,如需要完全独立的副本时,...
在Java中,可以利用`java.nio.file`包下的`Files`类提供的`copy()`方法配合递归实现。在C++中,可以使用Boost库的`boost::filesystem`来实现目录的拷贝。 对于商业源码,这意味着代码可能包含了版权保护、许可协议...
深拷贝则不仅复制对象本身,还会递归复制所有引用的对象,确保两个对象完全独立。 Apache Commons BeanUtils库中的`BeanUtils.copyProperties()`方法就是用来进行对象间属性值的浅拷贝。这个方法可以将一个对象的...
综上所述,Java文件夹的拷贝涉及了文件系统的操作、文件和目录的遍历、文件的读写与复制等多个知识点。`copyFile.java`源码文件为我们提供了一个基础的实现,通过理解和扩展这个代码,我们可以根据实际需求构建更...
然而,需要注意的是,浅拷贝的性能通常比深拷贝快,因为深拷贝需要递归复制所有嵌套的对象。但性能的差异可能取决于对象的复杂性和实际的硬件环境。 在使用Java进行对象拷贝时,需要根据业务需求选择合适的拷贝策略...
在Java编程中,深度拷贝和浅拷贝是两种重要的对象复制方式,它们涉及到对象的内存管理和内存结构的复制。本篇文章将详细讲解如何利用Java的反射机制实现深度拷贝,以及这种方式的优点和注意事项。 首先,理解深度...
浅复制只复制对象本身,而不复制它引用的对象,而深复制则会递归复制所有引用的对象。这篇博客将探讨如何在Java中对List进行深度复制。 首先,我们来理解一下什么是浅复制和深复制。在Java中,当我们使用`clone()`...
为了高效地与HDFS交互,Java API 提供了一套丰富的工具和类库,使得开发者能够方便地进行文件的读写、上传、下载、遍历、查找、拷贝以及管理HDFS上的文件和目录。以下将详细讲解如何使用Java API 操作HDFS。 ### 一...
- **深拷贝**:创建一个全新的对象,不仅复制对象本身,还递归复制其内部引用的所有对象。这样,两个对象完全独立,互不影响。 2. **Java中的对象复制方法** - **clone()方法**:Java的Object类提供了一个`clone...
要构建树状图,可以采用递归方式,对于每个目录,递归调用自身来处理子目录,并使用图形界面(如Swing或JavaFX)展示层次结构。 4. **文件IO操作**: 文件I/O是系统编程的基础,Java提供丰富的API来处理文件。除了...
深拷贝不仅复制对象的属性值,还对引用类型的字段进行递归复制,确保新对象拥有独立的内存空间,即使原始对象的引用字段被修改,也不会影响深拷贝的对象。深拷贝可以通过序列化和反序列化实现,或者手动实现...
如果`Professor`类有其他复杂类型的字段,如自定义对象,那么还需要在`clone()`方法中实现递归拷贝,以确保所有嵌套的对象都被深拷贝。 深拷贝和浅拷贝的选择取决于具体的需求。如果希望复制的对象与原始对象完全...
在IT行业中,尤其是在Java编程和运维领域,有时候我们需要对文件系统进行操作,比如合并两个文件夹的内容。这个任务可以通过编写脚本来实现,特别是在自动化运维流程中。本文将深入探讨如何使用Java来完成这个任务,...
下面将详细介绍如何在Java中遍历文件目录,以及如何利用流方式拷贝文件。 首先,我们可以使用`java.io.File`类来代表文件和目录,并执行基本的文件操作。要遍历一个目录,可以使用`File`类的`list()`或`listFiles()...
- 对于子目录,我们需要递归调用拷贝文件夹的函数,将子目录作为新的源路径。 以下是一个简化的代码示例,展示了如何使用Java进行文件夹拷贝: ```java import java.io.File; import java.io.IOException; import...
删除文件夹,递归删除目录下的所有文件及子目录下所有文件,函数名:getFile 作用:使用递归,输出指定文件夹内的所有文件 参数:path:文件夹路径 前置空格缩进,显示文件层次结构,通过文件名称获取导入文件到temp...