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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package com.xuchang.test;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.util.Scanner;

  9. public class Test3 {

  10.         /**
  11.          *3,从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
  12.          * @throws IOException
  13.          */
  14.         public static void main(String[] args) throws IOException {
  15.                 File dir1 = getFile();
  16.                 File dir2 = getFile();
  17.                 copyFiles(dir1,dir2);
  18.                 System.out.println("复制成功!");
  19.         }
  20.         /*定义getFile()方法
  21.          * A.返回值类型File
  22.          * B.参数列表
  23.          * 1.创建键盘录入对象
  24.          * 2.String line接受数据
  25.          * 3.封装成File对象
  26.          * 4.无限循环 判断是否是文件夹
  27.          * 5.return file;
  28.          * */
  29.         public static File getFile() {
  30.                 Scanner sc = new Scanner(System.in);
  31.                
  32.                 while(true) {
  33.                         System.out.println("请输入一个路径:");
  34.                         String line = sc.nextLine();
  35.                         File file = new File(line);
  36.                         if(!file.exists()) {
  37.                                 System.out.println("路径不存在!");
  38.                         }else if(file.isFile()) {
  39.                                 System.out.println("路径是文件");
  40.                         }else
  41.                                 return file;
  42.                 }
  43.         }
  44.        
  45.         /*定义copyFiles()方法
  46.          * A.返回值类型void
  47.          * B.参数列表File dir1.File dir2
  48.          * 1.调用listFiles()方法得打该文件夹下的所有文件对象并存入File[]中
  49.          * 2.遍历数组 如果是文件夹则递归
  50.          * 如果是文件则复制
  51.          * */
  52.         public static void copyFiles(File dir1,File dir2) throws IOException {
  53.                 File[] files = dir1.listFiles();
  54.                
  55.                 for (File file : files) {
  56.                         if(file.isDirectory()) {
  57.                                 File f = new File(dir2,file.getName());
  58.                                 f.mkdirs();   //创建文件夹目录
  59.                                 copyFiles(file,f);
  60.                         }else {
  61.                                 //copy(file,new File(dir2,file.getName()));
  62.                                 copy(file,dir2);
  63.                         }
  64.                 }
  65.         }
  66.         /*定义方法copy将文件拷贝到指定的文件夹下
  67.          * A.返回值类型void
  68.          * B.参数列表File file,File dir
  69.          * 1.创建输入流对象关联file
  70.          * 2.创建输出流对象关联dir,file
  71.          * 3.读写
  72.          * 4.关流释放资源
  73.          * */
  74.         public static void copy(File file,File dir) throws IOException {
  75.                 BufferedInputStream fis = null;
  76.                 BufferedOutputStream fos = null;
  77.                 try {
  78.                          fis = new BufferedInputStream(new FileInputStream(file));
  79.                          fos =new BufferedOutputStream(new FileOutputStream(new File(dir,file.getName())));
  80.                        
  81.                         int len;        //读写
  82.                         while((len = fis.read()) != -1) {
  83.                                 fos.write(len);
  84.                         }
  85.                 }finally {
  86.                         try {
  87.                                 if(fis != null)
  88.                                         fis.close();
  89.                         }finally {
  90.                                 if(fos != null)
  91.                                         fos.close();
  92.                         }
  93.                        
  94.                        
  95.                 }
  96.        
  97.        
  98.         }
  99. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马