A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

复制文件夹这个功能在第几天哪个视频中将的啊,急求

1 个回复

正序浏览
这个好像没有吧 我没看见过 不过粘了个代码过来  你咱们的一个版主写的
总体思想就是递归,要是目录就递归,要是文件就复制
  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;

  7. class CopyPath{
  8.          public static void main(String[] args)throws IOException{
  9.          String copyPathStr = "F:\\test"; //要复制的文件夹
  10.          String savePathStr = "F:\\copy"; //要保存到哪里
  11.          System.out.println("正在复制...");
  12.          copyPath(copyPathStr,savePathStr);
  13.          System.out.println("复制成功");
  14. }
  15. /**
  16. * 复制文件夹,本例没有包含该文件夹,只复制该文件夹下的所有文件及文件夹。
  17. * @param copyPathStr 要复制的文件夹
  18. * @param savePathStr 要复制到哪个文件夹下
  19. */
  20.           public static void copyPath(String copyPathStr,String savePathStr){
  21.           //首先用接收到的两个字符串创建成文件对象
  22.           File copyPath = new File(copyPathStr);
  23.           File savePath = new File(savePathStr);

  24.           //判断保存的目录是否存在
  25.           if (!(copyPath.exists())){
  26.           System.out.println("保存的目录不是有效目录!");
  27.           return;
  28. }
  29.            //判断在该目录下是否有相同的文件存在
  30.           if (savePath.exists()){
  31.                    System.out.println("复制失败!文件夹重复");
  32.                    return;
  33.          }
  34.          //创建主目录
  35.          savePath.mkdirs();

  36.           //获取该目录下所有文件及文件夹的数组列表
  37.          File[] files = copyPath.listFiles();
  38.          File pathStr = null;
  39.          for(File file : files){
  40.           //建立保存的目录
  41.                    pathStr = new File(savePathStr+(file.toString().replace(copyPathStr, "")));
  42.                   //如果是目录,再次调用fileToList方法。并创建目录
  43.                   if(file.isDirectory()){
  44.                            copyPath(file.toString(),pathStr.toString());
  45.                            pathStr.mkdirs();
  46.                     }
  47.                  //如果是文件,就调用复制文件的方法
  48.                   if(file.isFile()){
  49.                           copyFile(file,pathStr);
  50.           }
  51.       }
  52. }
  53. /**
  54. * 复制文件
  55. * @param file 要复制的文件绝对路径
  56. * @param path 要保存到的目录
  57. */
  58. public static void copyFile(File file,File path){
  59.           BufferedInputStream bis = null;
  60.           BufferedOutputStream bos = null;
  61.           try{
  62.             //若以上判断都通过,就创建输入流和输出流。
  63.                bis = new BufferedInputStream(new FileInputStream(file));
  64.                bos = new BufferedOutputStream(new FileOutputStream(path));
  65.                //创建数组,指定大小为available方法获取的读取流中的字节数。
  66.                byte[] bytes = new byte[bis.available()];
  67.                //保存数据
  68.               bis.read(bytes);
  69.               bos.write(bytes);
  70.             }catch(IOException e){
  71.                      throw new RuntimeException("复制文件失败");
  72.              }
  73.            //关闭流资源
  74.               finally{
  75.                         try{
  76.                                  if (bis!=null){
  77.                                             bis.close();
  78.                               }
  79.               }catch(IOException e){
  80.                        throw new RuntimeException("输入流关闭失败");
  81.                }
  82.               try{
  83.                      if (bos!=null){
  84.                                 bos.close();
  85.                      }
  86.              }catch(IOException e){
  87.                           throw new RuntimeException("输出流关闭失败");
  88.              }
  89.       }
  90. }
  91. }
复制代码

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 你太给力啦,谢谢你的答案。。。.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马