黑马程序员技术交流社区

标题: 有没有谁写过复制文件夹代码的 [打印本页]

作者: kangxiaoning    时间: 2013-12-3 18:45
标题: 有没有谁写过复制文件夹代码的
有的同学发来参考一下
作者: 小痞痞    时间: 2013-12-3 19:06

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.util.Scanner;

  6. public class CopyFileToDest {

  7.         /**
  8.          *  从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
  9.          */
  10.         public static void main(String[] args) throws IOException {
  11.                 File src = getDir();
  12.                 File dest = getDir();
  13.                 if(src.equals(dest)) {                        //当源文件和目标文件一致时不能拷贝
  14.                         System.out.println("不能拷贝,源文件和目的文件一致");
  15.                 } else {
  16.                         copyDir(src, dest);
  17.                 }
  18.         }
  19.        
  20.         private  static File getDir() {
  21.                 Scanner sc = new Scanner(System.in);
  22.                 System.out.println("请输入一个文件夹路径:");
  23.                 while (true) {
  24.                         String line = sc.nextLine();
  25.                         File file = new File(line);
  26.                         if (!file.exists()) {
  27.                                 System.out.println("你输入的路径不存在,请重新输入:");
  28.                         } else if (file.isFile()) {
  29.                                 System.out.println("你输入的是文件路径,请重新输入文件夹路径:");
  30.                         } else
  31.                                 return file;
  32.                 }
  33.         }

  34.         private static void copyDir(File src, File dest) throws IOException { //src源文件 dest目的目录
  35.                 File newDir = new File(dest, src.getName());        //创建目的目录,要拷贝到目的文件下,源文件名字不变
  36.                 newDir.mkdir();                                                                        //创建该文件夹或文件

  37.                 File[] subFiles = src.listFiles();                                //获取源文件的所有文件盒文件夹目录
  38.                 for (File subFile : subFiles) {                                        //遍历整个目录
  39.                         if (subFile.isFile()) {                                               
  40.                                 FileInputStream fis = new FileInputStream(subFile);                //创建文件源,也就是遍历到的当前文件
  41.                                 //创建File对象,父级目录是我们创建好的目录,名字还是原来文件的名字
  42.                                 FileOutputStream fos =
  43.                                                 new FileOutputStream(new File(newDir,subFile.getName()));
  44.                                 byte[] arr = new byte[1024];
  45.                                 int len;
  46.                                 while ((len = fis.read(arr)) != -1) {
  47.                                         fos.write(arr, 0, len);
  48.                                 }
  49.                                 fis.close();
  50.                                 fos.close();
  51.                         } else if (subFile.isDirectory()) {
  52.                                 copyDir(subFile,newDir);                //当是文件夹时已当前文件夹作为源文件夹 、我们建好的文件夹作为目的在进行文件拷贝
  53.                         }

  54.                 }

  55.         }

  56. }
复制代码

作者: 陪你等日出    时间: 2013-12-3 19:08
本帖最后由 陪你等日出 于 2013-12-3 20:09 编辑
  1. import java.io.*;
  2. class MainClass {
  3. public static void main(String[] args) throws Exception
  4. {
  5.         //假设你把E盘下“aaa”这个文件夹给拷贝到E盘并命名为copyfile
  6.         findAndCopyPics("E:\\aaa",
  7.                 "E:\\copyfile");
  8. }

  9. public static void findAndCopyPics(String fpath,String dpath) throws Exception
  10. {
  11.         File file = new File(fpath);
  12.         if (file.isDirectory())
  13.         {
  14.                 File copyfile = new File(dpath);
  15.                 copyfile.mkdirs();
  16.         }
  17.         File[] listFiles = file.listFiles();
  18.         for (File f : listFiles) {
  19.         if (f.isDirectory())
  20.         {
  21.                 // 是文件夹就递归
  22.                 findAndCopyPics(fpath + "\\" + f.getName(),dpath+"\\"+f.getName());
  23.         }
  24.         else
  25.         {
  26.                 // 不是文件夹,即是文件就拷备
  27.                 copyPics(fpath + "\\" + f.getName(),dpath+"\\"+f.getName());
  28.         }
  29. }
  30. }

  31. public static void copyPics(String fpath,String dpath) throws Exception
  32. {
  33.         FileInputStream fis = new FileInputStream(fpath);
  34.         FileOutputStream fos = new FileOutputStream(dpath);
  35.         byte[] b = new byte[1024];
  36.         int len = 0;
  37.         while ((len=fis.read(b))!=-1)
  38.         {
  39.                 fos.write(b,0,len);
  40.         }
  41.         fis.close();
  42.         fos.close();
  43.         }
  44. }
复制代码

呵呵,第二次回答这个问题了,直接复制了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2