【工具类开发】【IO流+递归】使用IO流和递归对系统文件夹和文件的相关拷贝功能案例实现(一)!

自学JAVA两三个月还是来培训班了!有个学习的氛围,感觉效率还是挺好的!

【功能实现:】算这是自己学习成长和巩固的记录吧!

package day10;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

/**
 * 文件拷贝的相关方法(实现:IO流+递归)
 * 	1.文本文件拷贝<".txt"; ".java"等无格式化文本文件>:copyBookFile()
 * 	2.任意文件的拷贝<".*"格式文本文件>:copyAllFile()
 * 	3.文件夹的某文本文件复制拷贝功能:copyBookFiles(File srcDir, String type, File destDir)
 * 	4.文件夹的任复制拷贝功能:copyAllFiles(File srcDir, String type, File destDir)
 * 	5.遍历文件夹下指定格式的所有文件:takeTypeFiles(File file, String type)
 * 	6.遍历文件夹下所有文件:takeAllFiles(File srcDir)
 * 	7.遍历指定文件夹:getAllFiles(File src)
 * 	8.文件夹的拷贝<文件夹下可包含文件>:copyFiles()
 * @author lenovo
 *
 */
public class CopyFilesUtil {
	
	/**
	 * 功能:将内容从一个文件拷贝到另一份文件中(文本文件的拷贝功能)
	 * (应用内容:IO流)
	 * @param srcDir	源文件路径地址
	 * @param destDir	目标文件路径地址
	 * @throws IOException	异常声明
	 */
	@SuppressWarnings("unused")
	public static void copyBookFile(File srcDir, File destDir) throws IOException {
		
		FileReader fr = null;
		FileWriter fw = null;
		try {
			fr = new FileReader(srcDir);
			fw = new FileWriter(destDir);
			int temp = 0;
			char[] bt = new char[20];
			while ((temp = fr.read(bt)) != -1) {
				fw.write(bt);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			fw.flush();
			fr.close();
			fw.close();
		}
		
	}
	
	/**
	 * 功能:将内容从一个文件拷贝到另一份文件中(任意文件的拷贝功能)
	 * (应用内容:IO流)
	 * @param srcDir	源文件路径地址
	 * @param destDir	目标文件路径地址
	 * @throws IOException	异常声明
	 */
	@SuppressWarnings("unused")
	public static void copyAllFile(File srcDir, File destDir) throws IOException {
		
		FileInputStream fis = null;
		FileOutputStream fos = null;
		try {
			fis = new FileInputStream(srcDir);
			fos = new FileOutputStream(destDir);
			int temp = 0;
			byte[] bt = new byte[20];
			while ((temp = fis.read(bt)) != -1) {
				fos.write(bt);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			fos.flush();
			fis.close();
			fos.close();
		}
		
	}
	
	/** 
	 * 功能:将一个路径目录下某格式的所有文本文件拷贝到另一份路径目录下(文件夹的某文本文件复制拷贝功能)。
	 * (应用内容:IO流、递归思想)
	 * @param srcDir	源文件夹路径地址
	 * @param type		文本文件格式类型
	 * @param destDir	目标文件夹路径地址
	 * @throws IOException	异常声明
	 */
	@SuppressWarnings("unused")
	public static void copyBookFiles(File srcDir, String type, File destDir) throws IOException {
		
		File[] files = srcDir.listFiles();
		for (File file : files) {
			if (file.isFile() && file.getName().toLowerCase().endsWith(type)) {
				// 调用文件拷贝程序执行拷贝功能
				CopyFilesUtil.copyBookFile(file, new File(destDir + "\\" + file.getName()));
			} else if (file.isDirectory()) {
				File[] fileNext = file.listFiles();
				copyBookFiles(file, type, destDir);
			}
		}
		
	}
	
	/** 
	 * 功能:将一个路径目录下某格式的所有文本文件拷贝到另一份路径目录下(文件夹的任意文件复制拷贝功能)。
	 * (应用内容:IO流、递归思想)
	 * @param srcDir	源文件夹路径地址
	 * @param type		文本文件格式类型
	 * @param destDir	目标文件夹路径地址
	 * @throws IOException	异常声明
	 */
	@SuppressWarnings("unused")
	public static void copyAllFiles(File srcDir, String type, File destDir) throws IOException {
		// 首先遍历srcDir目录转换file对象为数组
		File[] files = srcDir.listFiles();
		for (File file : files) {
			if (file.isFile() && file.getName().toLowerCase().endsWith(type)) {
				// 调用文件拷贝程序执行拷贝功能
				CopyFilesUtil.copyAllFile(file, new File(destDir + "\\" + file.getName()));
			} else if (file.isDirectory()) {
				File[] fileNext = file.listFiles();
				copyAllFiles(file, type, destDir);
			}
		}
	}
	
	/**
	 * 功能:获得指定文件夹下某格式的所有文件(遍历文件夹下指定格式的所有文件)
	 * @param file		目标文件夹路径
	 * @param type		文本文件格式类型
	 * @return filesAll	返回File的ArrayList集合
	 */
	@SuppressWarnings("null")
	public static ArrayList<File> takeTypeFiles(File file, String type) {
		
		ArrayList<File> filesAll = null;
		File[] files = File.listRoots();
		for (File f : files) {
			if (f.isFile() && f.getName().toLowerCase().endsWith(type)) {
				filesAll.add(f);
			} else if (f.isDirectory()) {
				takeTypeFiles(f, type);
			}
		}
		return filesAll;
	}
	
	/**
	 * 功能:获得指定文件夹下某格式的所有文件(遍历文件夹下所有文件)
	 * @param srcDir		目标文件夹路径
	 */
	@SuppressWarnings("null")
	public static ArrayList<File> takeAllFiles(File srcDir) throws IOException {
		
		ArrayList<File> filesAll = null;
		File[] files = srcDir.listFiles();
		for (File file : files) {
			if (file.isFile()) {
				filesAll.add(file);
			} else if (file.isDirectory()) {
				takeAllFiles(file);
			}
		}
		return filesAll;
	}
	
	/**
	 * 功能:获得指定文件夹下某格式的所有文件(遍历文件夹)
	 * @param src		目标文件夹路径
	 */
	@SuppressWarnings("null")
	public static ArrayList<File> getAllFiles(File src) {
		
		ArrayList<File> filesAll = null;
		File[] files = src.listFiles();
		for (File file : files) {
			filesAll.add(file);
			if (file.isDirectory()) {
				getAllFiles(file);
			}
		}
		return filesAll;
	}
}

慢慢来,该学的东西还有很多,路还很长,不过为了自己想要的生活一定要好好加油!!!慢慢的以后肯定会好的!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清の羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值