首页 > 学院 > 开发设计 > 正文

IO流_复制多级文件夹案例

2019-11-08 19:46:03
字体:
来源:转载
供稿:网友
package cn.itcast_05;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/* * 需求:复制多极文件夹 *  * 数据源:G:/Java/demos * 目的地:G:// *  * 分析: * 		A:封装数据源File * 		B:封装目的地File * 		C:判断该File是文件还是文件夹 * 			a:是文件夹 * 				就在目的地目录下创建该文件夹 * 				获取该File对象下的所有文件或者文件夹File对象 * 				遍历得到每一个File对象 * 				回到C * 			b:是文件 * 				就复制(字节流)	 */public class copyFolderDemo {	public static void main(String[] args) throws IOException {		// 封装数据源		File srcFolder = new File("D://a//demos");		// 封装目的地		File destFolder = new File("D://");		// 复制文件夹功能		copyFolder(srcFolder, destFolder);	}	/**	 * 复制文件夹方法	 * 	 * @param srcFolder	 *            数据源	 * @param destFolder	 *            目的地	 */	public static void copyFolder(File srcFolder, File destFolder)			throws IOException {		// 判断该File是文件还是文件夹		if (srcFolder.isDirectory()) {			// 文件夹			File newFolder = new File(destFolder, srcFolder.getName());			newFolder.mkdir();			// 获取该File对象下的所有文件或者文件夹File对象			File[] fileArray = srcFolder.listFiles();			// 遍历得到每一个File对象			for (File file : fileArray) {				copyFolder(file, newFolder);			}		} else {			// 文件			File newFile = new File(destFolder, srcFolder.getName());// G:/d.txt			// 复制文件功能			copyFile(srcFolder, newFile);		}	}	/**	 * 复制文件方法	 * 	 * @param srcFolder	 *            数据源	 * @param newFile	 *            目的地	 */	public static void copyFile(File srcFolder, File newFile)			throws IOException {		// 封装数据源		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(				srcFolder));		// 封装目的地		BufferedOutputStream bos = new BufferedOutputStream(				new FileOutputStream(newFile));		// 读写数据		byte[] bys = new byte[1024];		int len = 0;		while ((len = bis.read(bys)) != -1) {			bos.write(bys, 0, len);			bos.flush();		}		// 释放资源		bos.close();		bis.close();	}}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表