`
JavaSam
  • 浏览: 952145 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA 文件复制,移动工具(实用)

    博客分类:
  • JAVA
 
阅读更多

package com.file;

import java.io.File;//引入类
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

//实现文件的简单处理,复制和移动文件、目录等
public class TextCopyFileAndMove {
	public static void fileMove(String from, String to) throws Exception {// 移动指定文件夹内的全部文件
		try {
			File dir = new File(from);
			File[] files = dir.listFiles();// 将文件或文件夹放入文件集
			if (files == null)// 判断文件集是否为空
				return;
			File moveDir = new File(to);// 创建目标目录
			if (!moveDir.exists()) {// 判断目标目录是否存在
				moveDir.mkdirs();// 不存在则创建
			}
			for (int i = 0; i < files.length; i++) {// 遍历文件集
				if (files[i].isDirectory()) {// 如果是文件夹或目录,则递归调用fileMove方法,直到获得目录下的文件
					fileMove(files[i].getPath(), to + "\\" + files[i].getName());// 递归移动文件
					files[i].delete();// 删除文件所在原目录
				}
				File moveFile = new File(moveDir.getPath() + "\\"// 将文件目录放入移动后的目录
						+ files[i].getName());
				if (moveFile.exists()) {// 目标文件夹下存在的话,删除
					moveFile.delete();
				}
				files[i].renameTo(moveFile);// 移动文件
				System.out.println(files[i] + " 移动成功");
			}
		} catch (Exception e) {
			throw e;
		}
	}

	// 复制目录下的文件(不包括该目录)到指定目录,会连同子目录一起复制过去。
	public static void copyFileFromDir(String toPath, String fromPath) {
		File file = new File(fromPath);
		createFile(toPath, false);// true:创建文件 false创建目录
		if (file.isDirectory()) {// 如果是目录
			copyFileToDir(toPath, listFile(file));
		}
	}

	// 复制目录到指定目录,将目录以及目录下的文件和子目录全部复制到目标目录
	public static void copyDir(String toPath, String fromPath) {
		File targetFile = new File(toPath);// 创建文件
		createFile(targetFile, false);// 创建目录
		File file = new File(fromPath);// 创建文件
		if (targetFile.isDirectory() && file.isDirectory()) {// 如果传入是目录
			copyFileToDir(targetFile.getAbsolutePath() + "/" + file.getName(),
					listFile(file));// 复制文件到指定目录
		}
	}

	// 复制一组文件到指定目录。targetDir是目标目录,filePath是需要复制的文件路径
	public static void copyFileToDir(String toDir, String[] filePath) {
		if (toDir == null || "".equals(toDir)) {// 目录路径为空
			System.out.println("参数错误,目标路径不能为空");
			return;
		}
		File targetFile = new File(toDir);
		if (!targetFile.exists()) {// 如果指定目录不存在
			targetFile.mkdir();// 新建目录
		} else {
			if (!targetFile.isDirectory()) {// 如果不是目录
				System.out.println("参数错误,目标路径指向的不是一个目录!");
				return;
			}
		}
		for (int i = 0; i < filePath.length; i++) {// 遍历需要复制的文件路径
			File file = new File(filePath[i]);// 创建文件
			if (file.isDirectory()) {// 判断是否是目录
				copyFileToDir(toDir + "/" + file.getName(), listFile(file));// 递归调用方法获得目录下的文件
				System.out.println("复制文件 " + file);
			} else {
				copyFileToDir(toDir, file, "");// 复制文件到指定目录
			}
		}
	}

	public static void copyFileToDir(String toDir, File file, String newName) {// 复制文件到指定目录
		String newFile = "";
		if (newName != null && !"".equals(newName)) {
			newFile = toDir + "/" + newName;
		} else {
			newFile = toDir + "/" + file.getName();
		}
		File tFile = new File(newFile);
		copyFile(tFile, file);// 调用方法复制文件
	}

	public static void copyFile(File toFile, File fromFile) {// 复制文件
		if (toFile.exists()) {// 判断目标目录中文件是否存在
			System.out.println("文件" + toFile.getAbsolutePath() + "已经存在,跳过该文件!");
			return;
		} else {
			createFile(toFile, true);// 创建文件
		}
		System.out.println("复制文件" + fromFile.getAbsolutePath() + "到"
				+ toFile.getAbsolutePath());
		try {
			InputStream is = new FileInputStream(fromFile);// 创建文件输入流
			FileOutputStream fos = new FileOutputStream(toFile);// 文件输出流
			byte[] buffer = new byte[1024];// 字节数组
			while (is.read(buffer) != -1) {// 将文件内容写到文件中
				fos.write(buffer);
			}
			is.close();// 输入流关闭
			fos.close();// 输出流关闭
		} catch (FileNotFoundException e) {// 捕获文件不存在异常
			e.printStackTrace();
		} catch (IOException e) {// 捕获异常
			e.printStackTrace();
		}
	}

	public static String[] listFile(File dir) {// 获取文件绝对路径
		String absolutPath = dir.getAbsolutePath();// 声获字符串赋值为路传入文件的路径
		String[] paths = dir.list();// 文件名数组
		String[] files = new String[paths.length];// 声明字符串数组,长度为传入文件的个数
		for (int i = 0; i < paths.length; i++) {// 遍历显示文件绝对路径
			files[i] = absolutPath + "/" + paths[i];
		}
		return files;
	}

	public static void createFile(String path, boolean isFile) {// 创建文件或目录
		createFile(new File(path), isFile);// 调用方法创建新文件或目录
	}

	public static void createFile(File file, boolean isFile) {// 创建文件
		if (!file.exists()) {// 如果文件不存在
			if (!file.getParentFile().exists()) {// 如果文件父目录不存在
				createFile(file.getParentFile(), false);
			} else {// 存在文件父目录
				if (isFile) {// 创建文件
					try {
						file.createNewFile();// 创建新文件
					} catch (IOException e) {
						e.printStackTrace();
					}
				} else {
					file.mkdir();// 创建目录
				}
			}
		}
	}

	public static void main(String[] args) {// java程序主入口处
		String fromPath = "E:/createFile";// 目录路径
		String toPath = "F:/createFile";// 源路径
		System.out.println("1.移动文件:从路径 " + fromPath + " 移动到路径 " + toPath);
		try {
			fileMove(fromPath, toPath);// 调用方法实现文件的移动
		} catch (Exception e) {
			System.out.println("移动文件出现问题" + e.getMessage());
		}
		System.out.println("2.复制目录 " + toPath + " 下的文件(不包括该目录)到指定目录" + fromPath
				+ " ,会连同子目录一起复制过去。");
		copyFileFromDir(fromPath, toPath);// 调用方法实现目录复制
		System.out.println("3.复制目录 " + fromPath + "到指定目录 " + toPath
				+ " ,将目录以及目录下的文件和子目录全部复制到目标目录");
		copyDir(toPath, fromPath);// 调用方法实现目录以用目录下的文件和子目录全部复制
	}
}
 
0
0
分享到:
评论

相关推荐

    Java poi复制execl的sheet页,跨文件操作,数据和样式全部复制,工具类

    在Java开发中,Apache POI库是一个非常实用的工具,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel文件(.xlsx和.xls)。本篇将详细讲解如何使用POI库进行Excel的Sheet页复制,包括数据和样式的跨...

    [史上最全] 文件处理工具类 java版 处理文件流, 文件目录递归等

    - 文件复制、移动和删除(如 `copyFile(File source, File dest)`、`moveFile(File source, File dest)` 和 `deleteFile(String filePath)`); - 文件搜索和遍历(如 `listFilesInDir(File dir)` 和 `searchFile...

    Java程序_复制文件.jar

    Java程序“Java程序_复制文件.jar”是一个基于Java平台的实用工具,主要目的是演示如何在Java中实现文件的复制和移动操作。这个程序对于正在学习Java输入/输出(IO)和Swing GUI库的学生来说是一个很好的参考实例。...

    java文件操作

    Java文件操作是编程中不可或缺的一部分,尤其是在处理I/O流、文件读写以及文件管理时。Apache Commons IO是一个非常实用的库,它为Java开发者提供了大量的工具类和方法,以简化文件操作。在这个场景中,我们关注的是...

    Java文件批量处理程序

    Java 文件批量处理程序是使用 Java 语言开发的一款功能强大且实用的文件批量处理工具。下面我们将对该程序的主要功能和使用方法进行详细的介绍。 程序概述 Java 文件批量处理程序是一款基于 Java 平台的文件批量...

    30个常用java工具类

    2. **`java.util.Arrays`**:提供了一系列静态方法来操作数组,包括排序、复制、填充和比较等。 3. **`java.util.Collections`**:与`Arrays`类似,但针对集合框架中的接口和类,如`List`、`Set`和`Map`,提供排序...

    java上传文件jar

    这些工具在处理文件上传时,往往用于临时存储、移动或复制上传的文件。 其次,`commons-fileupload-1.3.2.jar`是Apache Commons FileUpload库,专门用于处理HTTP请求中的文件上传。在Web应用中,文件通常通过POST...

    牛逼的java常用工具类

    `Files`类提供了一些高级的文件操作功能,如复制、移动和检查文件属性。 3. **并发工具类**:`java.util.concurrent`包包含了许多用于多线程编程的工具类,如Semaphore(信号量)、ExecutorService(执行器服务)和...

    java 文件操作类

    本文将深入探讨`File`类以及相关的实用方法,帮助你更好地理解和运用Java进行文件操作。 1. **File类的基本概念** `File`类是Java中的一个核心类,它代表了文件和目录路径名的抽象表示。通过`File`对象,我们可以...

    java实用组件集 源码 文件操作组件

    4. **文件复制与移动**:组件集可能包含文件复制和移动的便捷方法,这些方法可能使用`FileChannel`进行高效的大文件传输,或者通过`Files`类提供的API来完成操作。 5. **文件过滤与遍历**:在处理文件夹时,可能...

    java各种常用的工具类封装 源码

    2. **FileUtil**: `FileUtil` 类用于处理文件和目录的操作,如读写文件、创建、删除、复制、移动文件和目录。它通常会封装`java.io` 包中的`File`类和流操作,提供更友好的API,避免处理I/O异常。 3. **...

    java命令行文件管理器

    【标签】"java小实验"表明这是一个学习或实践Java的项目,可能适合初学者用来加深对Java文件操作的理解。这个实验可以帮助开发者掌握Java的IO流操作,理解命令行参数的处理,并锻炼问题解决和调试技能。 在提供的...

    简易文件复制工具(方便多模块开发)

    【简易文件复制工具】是一款专为多模块开发设计的实用工具,它简化了在不同项目模块间移动和复制文件的过程,极大地提升了开发效率。这款工具的核心功能在于它提供了两个独立的文件浏览窗口,用户可以同时查看和操作...

    abe.jar android备份文件提取工具-最新版

    在实际操作中,用户可能需要先将Android设备的备份文件复制到计算机上,然后使用abe.jar打开备份文件。按照说明.txt的指示,用户可以选择要提取的数据类型,工具会将其解压并导出到用户的指定位置。这个过程对于那些...

    JAVA 工具类 项目

    它可能提供了如创建、删除、复制、移动文件,读取文件内容,检查文件是否存在等功能。例如,`readFileToString()`方法用于将整个文件读取为字符串,`copyFile()`则用于文件的复制,这些方法简化了对文件系统的操作,...

    s40 5.0版JAVA手机实用工具

    【s40 5.0版JAVA手机实用工具】是一系列专为诺基亚S40第五版手机设计的应用程序,这些工具旨在提高用户在移动设备上的操作效率和便利性。JAVA(Java ME)是一种跨平台的编程语言,广泛应用于移动设备,尤其是非智能...

    java工具类java工具类java工具类

    文件操作工具类是Java开发中的重要组成部分,它通常包含了打开、关闭、读写文件,以及文件复制、移动、删除等操作。这类工具类使得开发者能够方便地处理文件系统中的各种任务。 HTTP文件的队列下载工具类则是网络...

    java绿色反编译工具

    Java绿色反编译工具是一种专为Java开发者设计的实用程序,它无需安装,只需解压缩后即可直接使用,因此非常便捷。在编程领域,反编译是将已编译的字节码(.class文件)转换回源代码的过程,这对于理解和学习其他人的...

    Java-Android工具类

    SD工具类通常包含读写文件、检查SD卡是否可用、创建目录、移动或复制文件等方法。例如,`saveFileToSDCard()`方法用于将数据保存到SD卡,而`readFileFromSDCard()`则用于从SD卡读取文件。这些方法简化了文件操作,...

Global site tag (gtag.js) - Google Analytics