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 }

猜你喜欢

转载自www.cnblogs.com/bfcs/p/10423218.html