`

文件夹拷贝

阅读更多

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.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

//文件夹复制工具
public class FileCopy {
	public static void copyFolderFileB2B(String fromFile, String toFile) {
		copyFolderFileB2B(new File(fromFile), toFile);
	}
	
	public static void copyFolderFile(String fromFile, String toFile) {
		copyFolderFile(new File(fromFile), toFile);
	}
	
	public static void copyFolderFile(File fromFile, String toFile) {
		//如果为空就copy文件
		if (fromFile.isFile()) {
			toFile = toFile + "/" + fromFile.getName();
			FileWriter toFileWriter = null;
			FileReader fromFileReader = null;
			BufferedWriter bw = null;
			BufferedReader br = null;
			
			try {
				
				toFileWriter = new FileWriter(new File(toFile));
				fromFileReader = new FileReader(fromFile);
				
				bw = new BufferedWriter(toFileWriter);
				br = new BufferedReader(fromFileReader);
				String lineString = null;
				
				String lineSeparator = System.getProperties().getProperty("line.separator");//换行符
				
				while((lineString = br.readLine()) != null) {
					bw.write(lineString);
					bw.write(lineSeparator);
				}
				
				bw.flush();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				try {
					if (bw != null) {
						bw.close();
					}
					if (br != null) {
						br.close();
					}
					if (fromFileReader != null) {
						fromFileReader.close();
					}
					if (toFileWriter != null) {
						toFileWriter.close();
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			return;
		}
		File fileTemp = new File(toFile);
		if (!fileTemp.exists()) {
			fileTemp.mkdir();
		}
		toFile = toFile + File.separator + fromFile.getName();
		if (!new File(toFile).exists()) {
			new File(toFile).mkdir();
		}
		
		for (File f : fromFile.listFiles()) {
			copyFolderFile(f, toFile);
		}
		
	}
	
	public static void copyFolderFileB2B(File fromFile, String toFile) {
		//如果为空就copy文件
		if (fromFile.isFile()) {
			toFile = toFile + "/" + fromFile.getName();
			FileOutputStream toFileWriter = null;
			FileInputStream fromFileReader = null;
			BufferedOutputStream bw = null;
			BufferedInputStream br = null;
			
			try {
				
				toFileWriter = new FileOutputStream(new File(toFile));
				fromFileReader = new FileInputStream(fromFile);
				
				bw = new BufferedOutputStream(toFileWriter);
				br = new BufferedInputStream(fromFileReader);
//				String lineString = null;
				byte[] bytes = new byte[1024];
				
//				String lineSeparator = System.getProperties().getProperty("line.separator");//换行符
				
				while(br.read(bytes) != -1) {
					bw.write(bytes);
				}
				
				bw.flush();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				try {
					if (bw != null) {
						bw.close();
					}
					if (br != null) {
						br.close();
					}
					if (fromFileReader != null) {
						fromFileReader.close();
					}
					if (toFileWriter != null) {
						toFileWriter.close();
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			return;
		}
		File fileTemp = new File(toFile);
		if (!fileTemp.exists()) {
			fileTemp.mkdir();
		}
		toFile = toFile + File.separator + fromFile.getName();
		if (!new File(toFile).exists()) {
			new File(toFile).mkdir();
		}
		
		for (File f : fromFile.listFiles()) {
			copyFolderFileB2B(f, toFile);
		}
		
	}
}

 

分享到:
评论

相关推荐

    文件、文件夹拷贝,可以拷贝文件、以及文件夹

    本项目是用C语言编写的一个文件夹拷贝工具,它已经在Visual C++ 6.0环境下成功编译,能够有效地实现对文件及文件夹的拷贝功能。 首先,我们要理解C语言的基础知识,它是计算机编程的基础语言之一,以其简洁和高效...

    Qt文件或文件夹拷贝

    这样,当你需要在不同地方进行文件或文件夹拷贝时,只需调用这个库的接口即可,简化了代码逻辑,提高了效率。 总的来说,`Qt`库提供了强大的文件和文件夹操作能力,开发者可以根据需求灵活运用这些API,实现各种...

    在局域网\本地实现 多线程文件夹拷贝

    标题中的“在局域网\本地实现 多线程文件夹拷贝”指的是一个编程项目,目的是优化在局域网或本地计算机之间的大量文件和文件夹的复制过程,通过使用多线程技术来提高拷贝效率。这个项目可能涉及到网络编程、多线程...

    IO进程线程Day5 文件夹拷贝

    文件夹拷贝

    狂龙文件夹拷贝器V1.0

    《狂龙文件夹拷贝器V1.0》是一款专为用户设计的高效文件复制工具,旨在简化并加速批量文件的移动或复制过程。这款软件以其简洁的操作界面和强大的功能特性,深受用户喜爱。在日常工作中,我们经常需要将一个目录下的...

    IO进程线程Day5 文件夹拷贝 从文件中读取数据到内存,从内存写入到文件 父子进程发送消息

    今天我们将深入探讨“IO进程线程Day5”中的核心知识点,包括文件夹拷贝、从文件读取数据到内存以及内存到文件的写入,以及父子进程间的消息传递。 首先,让我们关注文件夹拷贝这一过程。文件夹拷贝不仅仅是简单的...

    C#拷贝文件夹进度条

    网上好多负责文件夹的进度条写的都有问题,在此基础上,自己修改了一下,进度条可以完美显示出来,另外还加了一个label动态显示拷贝的文件名,用的多线程,里面一些细节大家还是要注意一下的。另外拷贝文件夹是是...

    C# CopyDirectory 文件夹拷贝

    总之,`C# CopyDirectory`是C#编程中进行文件夹拷贝的重要工具,结合其他文件操作方法,可以实现丰富的文件管理功能。对于初学者而言,掌握这些基本操作是学习C#开发过程中不可或缺的部分。通过实践和理解这些方法的...

    用java实现的文件和文件夹拷贝和转移

    用java实现的文件和文件夹拷贝和转移

    完整的俄罗斯方块C#源程序,运行程序时将目录下的images和sounds文件夹拷贝到bin/debug或者bin/Release目录下,否则运行时会找不到文件。

    5. **资源管理**:在标题和描述中提到,运行程序时需要将`images`和`sounds`文件夹拷贝到`bin/debug`或`bin/Release`目录下。这是因为在编译后,程序引用的资源文件会被打包到这些目录下的可执行文件中,若不在相应...

    Protel99汉化包

    2,把这个名为“Protel99汉化”的文件夹拷贝到硬盘上(因为刻录成光盘以后,文件属性都自动变为了只读)。 3,然后进这个“第三大步Protel99汉化”目录(从第一步开始,什么也不用改动),分别进各个目录里面, 把...

    C# 文件夹的拷贝与删除案例源码

    1. **文件夹拷贝**: 文件夹的拷贝通常涉及到递归操作,因为一个文件夹可能包含多个子文件夹和文件。`System.IO.DirectoryInfo`类提供了`CopyTo`方法,可以用来复制整个目录结构。以下是一个简单的文件夹拷贝示例:...

    文件夹的拷贝.rar

    在Java编程语言中,文件和文件夹的拷贝是一个常见的任务,特别是...以上就是使用Java实现文件夹拷贝的关键知识点,包括传统I/O流和NIO的使用,以及递归处理和异常处理。在实际开发中,可以根据具体需求选择合适的方法。

    NodeJS 文件夹拷贝以及删除功能

    文件夹拷贝及删除是常见的文件系统操作,NodeJS通过内置的fs(文件系统)模块提供了一系列用于执行这些操作的函数。fs模块是NodeJS的核心模块之一,它提供了丰富的API来与文件系统进行交互。 在这篇文章中,作者...

    C# 文件工具类 文件读写 复制 删除 创建文件夹

    C# 文件工具类 实际项目使用 久经考验 文件读写 复制 删除 创建文件夹 判断文件扩展名等等

    c语言遍历文件夹

    根据给定的信息,本文将详细解释如何使用C语言来遍历文件夹,并处理其中的文本文件。本程序主要涉及到了文件目录的操作、结构体的使用、条件判断与循环控制等核心概念。 ### 一、程序概述 该C语言程序旨在遍历指定...

    MATLAB 数学建模与数学实验课件

    1、直接将“test”文件夹拷贝到c:盘上即可使用。 2、本课件中所有程序都在MATLAB6.1中调试通过. 3、若要使用超级链接直接链接到MATLAB,应将MATLAB软件安装在c:盘上。本课件除第4、5、6、14讲链接 到MATLAB6.1外,...

Global site tag (gtag.js) - Google Analytics