- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- /**
- * 这是一个复制某一目录下所有的内容到指定目录下的类
- * @author wen
- */
- public class CopyFiles {
- private static int I = 1;
- /**
- * 这是复制文件的方法
- * @param src 要复制的源路径
- * @param dest 目的地
- */
- public void getCopyFile(String src, String dest) {
- // 封装数据源
- File srcFile = new File(src);
- // 封装目的地
- File destFile = new File(dest);
- // 计算复制时间
- System.out.println("复制开始,请稍后...");
- long str = System.currentTimeMillis();
- CopyFile(srcFile, destFile);
- long end = System.currentTimeMillis();
- System.out.println("复制完成,共耗时: " + (end - str) + "毫秒");
- }
- private void CopyFile(File src, File dest) {
- // 获取src目录下的所有文件
- File[] file = src.listFiles();
- // 遍历
- if (file != null) {
- for (File f : file) {
- if (f.isDirectory()) {
- dest = newFile(f, dest);
- CopyFile(f, dest);
- dest = dest.getParentFile();
- } else {
-
- if (!dest.exists()) {
- dest.mkdirs();
- }
- try {
- copyFile(f, dest);
- System.out.println("第" + (I++) + "条文件 : "
- + f.getName());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- private void copyFile(File f, File dest) throws IOException {
- // 封装源数据
- BufferedInputStream bis = new BufferedInputStream(
- new FileInputStream(f));
- // 封装目的地
- File file = new File(dest, f.getName());
- BufferedOutputStream bos = new BufferedOutputStream(
- new FileOutputStream(file));
- // 读写数据
- byte[] bys = new byte[1024];
- int len = 0;
- while ((len = bis.read(bys)) != -1) {
- bos.write(bys, 0, len);
- bos.flush();
- }
- // 释放资源
- bis.close();
- bos.close();
- }
- private File newFile(File f, File dest) {
- // 封装目的地
- File file = new File(dest, f.getName());
- file.mkdirs();
- System.out.println("第" + (I++) + "条文件 : " + file.getName());
- return file;
- }
- }
- import java.util.Scanner;
- public class CopyFileTest {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入要复制的文件路径:");
- String src = sc.nextLine();
- System.out.println("请输入要复制的文件路径:");
- String dest = sc.nextLine();
- CopyFiles cf = new CopyFiles();
- cf.getCopyFile(src, dest);
- }
- }
复制代码 |
|