有时候,需要对文件进行拷贝。如果目录下文件太多,ctrl+ c 起来是在太费时间,有时候文件多到根本无法ctrl +c,何况还有个ctrl +v 的操作 。既然算是程序员,还是写代码解决的,方便、快速。 直接上代码吧。
public class FileHelper { public static void main(String args[]) throws IOException { String url1 = "E:\\A"; // 源文件夹 String url2 = "D:\\B\\"; // 目标文件夹 (new File(url2)).mkdirs(); // 创建目标文件夹 File[] file = (new File(url1)).listFiles(); // 获取源文件夹当前下的文件或目录 for (int i = 0; i < file.length; i++) { if (file[i].isFile()) // 复制文件 { String type = file[i].getName().substring( file[i].getName().lastIndexOf(".") + 1); copyFile(file[i], new File(url2 + file[i].getName())); } if (file[i].isDirectory()) // 复制目录 { String sourceDir = url1 + File.separator + file[i].getName(); String targetDir = url2 + File.separator + file[i].getName(); copyDirectiory(sourceDir, targetDir); } } } // 复制文件 public static void copyFile(File sourceFile, File targetFile) throws IOException { BufferedInputStream inBuff = null; BufferedOutputStream outBuff = null; try { inBuff = new BufferedInputStream(new FileInputStream(sourceFile)); outBuff = new BufferedOutputStream(new FileOutputStream(targetFile)); byte[] b = new byte[1024 * 5]; int len; while ((len = inBuff.read(b)) != -1) { outBuff.write(b, 0, len); } outBuff.flush(); } finally { if (inBuff != null) inBuff.close(); if (outBuff != null) outBuff.close(); } } // 复制文件夹 public static void copyDirectiory(String sourceDir, String targetDir) throws IOException { (new File(targetDir)).mkdirs(); File[] file = (new File(sourceDir)).listFiles(); for (int i = 0; i < file.length; i++) { if (file[i].isFile()) { File sourceFile = file[i]; File targetFile = new File( new File(targetDir).getAbsolutePath() + File.separator + file[i].getName()); copyFile(sourceFile, targetFile);// 递归调用 } if (file[i].isDirectory()) { String dir1 = sourceDir + "/" + file[i].getName(); String dir2 = targetDir + "/" + file[i].getName(); copyDirectiory(dir1, dir2); } } } }