JAVA 资料复制工具(new深度复制所有文件)
JAVA 文件复制工具(new深度复制所有文件)
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileCopy { public static void testCopyFolder() { String sourceFilePath = "D:\\java_test"; String targetFilePath = "D:\\alex-test"; copyFile(sourceFilePath, targetFilePath); // int sourceFileNum = new File(sourceFilePath).listFiles().length; // int targetFileNum = new File(targetFilePath + "\\"+ new File(sourceFilePath).getName()).listFiles().length; } public static void testCopyFile() { String sourceFilePath = "D:\\test1.txt"; String targetFilePath = "D:\\alex-test"; copyFile(sourceFilePath, targetFilePath); System.out.println("Copy complete..."); } /** * 如需测试,请先把”第8题测试“文件夹中的文件复制到D盘根目录 */ public static void main(String[] args) { File file = new File("D:\\test2.txt"); if (!file.exists()) { try { file.createNewFile(); System.out.println("file name is " + file.getName()); file = file.getAbsoluteFile(); System.out.println("absolute file is " + file); System.out.println("new File is created"); } catch (IOException e) { e.printStackTrace(); } } testCopyFolder(); testCopyFile(); } /** * @param sourceFilePath * 文件复制源 * @param targetFilePath * 文件复制目标端 */ public static void copyFile(String sourceFilePath, String targetFilePath) { File sourceFile = new File(sourceFilePath); File[] sourceFiles = null; if (sourceFile.isDirectory()) { targetFilePath += "\\" + sourceFile.getName(); File targetFile = new File(targetFilePath); targetFile.mkdirs(); sourceFiles = sourceFile.listFiles(); } else if (sourceFile.isFile()) { sourceFiles = new File[] { sourceFile }; } for (int i = 0; i < sourceFiles.length; i++) { if (sourceFiles[i].isDirectory()) { String newSourceFilePath = sourceFilePath + "\\"+ sourceFiles[i].getName(); copyFile(newSourceFilePath, targetFilePath); } else { try { FileInputStream fis = new FileInputStream(sourceFiles[i]); FileOutputStream fos = new FileOutputStream(targetFilePath+ "\\" + sourceFiles[i].getName()); int read = -1; while ((read = fis.read()) != -1) { fos.write(read); } fos.flush(); fos.close(); fis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } } }