黑马程序员技术交流社区

标题: 学习IO和递归,写了个拷贝文件的Demo [打印本页]

作者: cuilitang    时间: 2013-10-24 00:21
标题: 学习IO和递归,写了个拷贝文件的Demo
本帖最后由 cuilitang 于 2013-10-24 00:31 编辑
  1. package cn.itcast;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.util.Scanner;


  7. public class CopyDemo {
  8.         public static void main(String[] args){
  9.                 //String src = "G:\\temp";                        将这两个字符串改由Scanner接收
  10.                 //String dest = "F:";
  11.                 Scanner sc = new Scanner(System.in);
  12.                
  13.                 System.out.println("请输入需要被拷贝的文件夹的路径(路径中斜杠请使用双斜杠):");
  14.                 String src = sc.next();
  15.                 System.out.println("请输入拷贝目标位置:");
  16.                 String dest = sc.next();
  17.                 File srcfile = new  File(src);
  18.                 File destfile = new  File(dest);
  19.                 try{
  20.                         copy(srcfile,destfile);
  21.                 }catch(Exception e){
  22.                         throw new RuntimeException("拷贝文件失败,请检查源文件或者目标位置是否存在");
  23.                 }
  24.                 System.out.println("拷贝完毕,请查看。");
  25.                         
  26.                         
  27.         }
  28.                
  29.                 public static void copy(File srcfile,File destfile) throws Exception{
  30.                         //在目标位置创建同名文件夹
  31.                         File newDir = new File(destfile,srcfile.getName());
  32.                         newDir.mkdir();
  33.                         //遍历源文件夹
  34.                         File[] subFiles = srcfile.listFiles();
  35.                         for (File subfile : subFiles) {        
  36.                                  // 输出文件名,测试文件是否遍历成功
  37.                                 String name = subfile.getName();
  38.                                 System.out.println(name);
  39.                                 //如果是文件,直接拷贝
  40.                                 if(subfile.isFile()){
  41.                                         FileInputStream fileInputStream = new FileInputStream(subfile);
  42.                                         FileOutputStream fileOutputStream = new FileOutputStream(new File(newDir,subfile.getName()));
  43.                                        
  44.                                         int i = 0;
  45.                                         byte [] arr = new byte[1024];
  46.                                         while((i = fileInputStream.read(arr)) != -1){
  47.                                                 fileOutputStream.write(arr,0,i);
  48.                                                 fileOutputStream.flush();
  49.                                         }
  50.                                         fileInputStream.close();
  51.                                         fileOutputStream.close();
  52.                                         //如果不是文件夹,递归调用拷贝方法
  53.                                 }else{
  54.                                         copy(subfile,newDir);                        
  55.                                 }
  56.         
  57.                         }
  58.                         
  59.                 }
  60.         }
复制代码

作者: cuilitang    时间: 2013-10-24 00:30
http://pan.baidu.com/s/1xeD9b
作者: 漫步人    时间: 2013-10-24 03:41
IO流的由浅入深,很常见,不仅能解决关于文件的各种操作,也能对文件图片进行颜色的涂鸦等,这也是面试和笔试中问到最多的一个知识点之一!
加油!知识重在积累!




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