zoukankan      html  css  js  c++  java
  • java 文件夹的复制

    复制文件夹
    字节流
    BufferedInputStream,BufferedOutputStream
    FileInputStream,FileOutputStream
    问题分解
    (1) 复制一个文件 copyFile()
    (2) 指定目录下的所有文件 copyDir()
    (3) 指定目录下的所有文件及子目录下的所有文件 ---递归调用copyDir

     1 import java.io.BufferedInputStream;
     2 import java.io.BufferedOutputStream;
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.FileNotFoundException;
     6 import java.io.FileOutputStream;
     7 import java.io.IOException;
     8 
     9 public class TestCopy {
    10     public static void main(String[] args) {
    11         
    12         File srcDir=new File("D:\PanDownload");
    13         File targetDir=new File("F:\PanDownload");
    14         //调用复制指定目录下所有文件的方法
    15         copyDir(srcDir, targetDir);
    16     }
    17     public static void copyDir(File srcDir,File targetDir){
    18         if(!targetDir.exists()){
    19             targetDir.mkdir();//如果目的地的目录不存在,则需要使用File类的方法进行创建目录
    20         }
    21         File []files=srcDir.listFiles(); //获取指定目录下的所有File对象
    22         for (File file : files) {
    23             if (file.isFile()) {
    24                  //如果file是文件则复制  srcDir -->D:\PanDownload  拼接  D:\PanDownload\XXXX文件
    25                 //    targetDir-->E:\PanDownload 拼接 E:\PanDownload\XXXX文件
    26                 copyFile(new File(srcDir+"\"+file.getName()), new File(targetDir+"\"+file.getName()));
    27             }else{
    28                 //不是继续调用该方法判断,使用递归实现
    29                 copyDir(new File(srcDir+"\"+file.getName()), new File(targetDir+"\"+file.getName()));
    30             }
    31         }
    32     }
    33     public static void copyFile(File srcFile,File targetFile){
    34         //(1)提高读取效率,从数据源
    35         BufferedInputStream bis=null;
    36         //(2)提高写入效率,写到目的地
    37         BufferedOutputStream bos=null;
    38         try {
    39             bis = new BufferedInputStream(new FileInputStream(srcFile));
    40             
    41             bos = new BufferedOutputStream(new FileOutputStream(targetFile));
    42             //(3)边读边写
    43             byte [] buf=new byte[1024];//中转站
    44             int len=0;//用于存储读到的字节的个数
    45             while((len=bis.read(buf))!=-1){
    46                 bos.write(buf,0,len);
    47             }
    48         } catch (FileNotFoundException e) {
    49             // TODO Auto-generated catch block
    50             e.printStackTrace();
    51         } catch (IOException e) {
    52             // TODO Auto-generated catch block
    53             e.printStackTrace();
    54         }finally{
    55         //(4)关闭
    56             if(bos!=null){
    57                 try {
    58                     bos.close();
    59                 } catch (IOException e) {
    60                     // TODO Auto-generated catch block
    61                     e.printStackTrace();
    62                 }
    63             }
    64             if(bis!=null){
    65                 try {
    66                     bis.close();
    67                 } catch (IOException e) {
    68                     // TODO Auto-generated catch block
    69                     e.printStackTrace();
    70                 }
    71             }
    72         
    73         }
    74     }
    75 }
  • 相关阅读:
    每日二题20201117(34. 在排序数组中查找元素的第一个和最后一个位置)
    【CQOI2011】动态逆序对
    P3584 [POI2015]LAS
    P4643 [国家集训队]阿狸和桃子的游戏
    【CF555E】Case of Computer Network
    P3810 【模板】三维偏序(陌上花开)
    P3391 【模板】文艺平衡树(Splay)
    P3690 【模板】Link Cut Tree (动态树)
    【CF161D】Distance in Tree
    P3806 【模板】点分治1
  • 原文地址:https://www.cnblogs.com/bfcs/p/10423218.html
Copyright © 2011-2022 走看看