// 这个是个入口文件
package com.fmg.CopyHomework; import java.io.File; public class Copy { public static void main(String[] args) { File copyFrom = new File("E:\\JAVA"); String copyFromStr = copyFrom.getPath(); // E:\JAVA File copyTo = new File("E:\\test"); String copyToStr = copyTo.getPath(); // E:\test // 判断是否存在 if (!copyTo.exists()) { copyTo.mkdir(); } // 开始复制 beginCopy(copyFromStr, copyToStr); } // 参数 复制的原路径, 复制的目标路径 public static void beginCopy(String from, String to) { File fromFile = new File(from); // 得到由名字组成的字符串数组 String[] fileList = fromFile.list(); for (int i = 0; i < fileList.length; i++) { File tempFile = new File(from + "\\" + fileList[i]); if (tempFile.isFile()) { // 是一个文件,直接复制 FileReadTool frt = new FileReadTool(); byte[] bytes = frt.read(tempFile.getPath()); FileWriterTool fwt = new FileWriterTool(); fwt.writer(bytes, to + "\\" + fileList[i], false); } else { // 是一个文件夹, 调用递归 复制 // 1. 判断文件夹是否存在 如果不存在就创建一个文件夹 File copyTo = new File(to + "\\" + fileList[i]); if (!copyTo.exists()) { copyTo.mkdir(); } // 2. 获取需要复制的根路径 File copyFrom = new File(from + "\\" + fileList[i]); String copyFromStr = copyFrom.getPath(); // 3. 获取复制到的根路径 String copyToStr = copyTo.getPath(); // 4. 调用递归 开始复制 beginCopy(copyFromStr, copyToStr); } } } }
入口文件会引用连个工具类, 自己封装的, 一个读取文件的类, 一个写入文件的类
// 读取工具
package com.fmg.CopyHomework; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class FileReadTool { public byte[] read(String road) { FileInputStream fis = null; try { fis = new FileInputStream(road); byte[] bytes = new byte[fis.available()]; fis.read(bytes); fis.close(); return bytes; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } return new byte[1]; } }
// 写入工具
package com.fmg.CopyHomework; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * 接收三个参数 * 1. 要输出的字节流 * 2. 输出的路径 * 3. 是否使用追加输出 */ public class FileWriterTool { public void writer (byte[] bytes, String road, boolean boo){ FileOutputStream fos = null; try { fos = new FileOutputStream(road, boo); try { fos.write(bytes); fos.flush(); } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
来自小白的学习日历!!!
原文:https://www.cnblogs.com/l24118028/p/14883458.html