import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * @ClassName: Copy * @Description: 文件复制 * @author snow * @date 2021年11月25日 * */ public class Copy { public static void main(String[] args) throws IOException { File inFolder = new File("D:\\TestRead"); File outFolder = new File("D:\\"+ inFolder.getName()+"copy"); copyFolder(inFolder,outFolder); System.out.println("复制完成"); } /** * @Title: copyFolder * @author snow * @date 2021年11月25日 * @Description: 复制文件夹 * @param @param inFolder * @param @param outFolder * @param @throws IOException 参数 * @return void 返回类型 * @throws */ private static void copyFolder(File inFolder, File outFolder) throws IOException { //遍历文件 File[] files = inFolder.listFiles(); for (File file : files) { //文件复制 if (file.isFile()){ copyFile(file,outFolder); }else if (file.isDirectory()){ //递归复制这个子文件夹 File newFolder = new File(outFolder,file.getName()); if (!newFolder.exists()){ newFolder.mkdirs(); } //递归子文件夹 copyFolder(file,newFolder); } } } /** * @Title: copyFile * @author snow * @date 2021年11月25日 * @Description: 复制文件 * @param @param file * @param @param outFolder 参数 * @return void 返回类型 * @throws */ public static void copyFile(File file, File outFolder){ BufferedInputStream bis = null; BufferedOutputStream bos = null; File nf = new File(outFolder, file.getName()); try { bis = new BufferedInputStream(new FileInputStream(file)); bos = new BufferedOutputStream(new FileOutputStream(nf)); //一次读取字节 byte[] bytes = new byte[1024]; //储存读的字节数 int num = 0; while ((num=bis.read(bytes))!= -1){ bos.write(bytes,0,num); } } catch (IOException e) { e.printStackTrace(); } finally { try { if(bis != null){ bos.close(); } if(bos != null){ bos.close(); } } catch (IOException e) { e.printStackTrace(); } } } }