Java 平时作业五

使用 I/O 流和文件对象实现目录备份功能。

 1 package asg5;
 2 import java.io.File;
 3 import java.io.FileInputStream;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 public class copyFileDir {
 7     
 8 
 9     
10         public static void main(String[] args) throws IOException
11         {
12             copyDir("D:\大二\java\Java程序设计课件", "D:\大二\java\1");
13         }
14         /**
15          * 使用递归复制目录,
16          * 
17          * @param FromDir
18          *            源目录的路径名称
19          * @param ToDir
20          *            目的目录的路径名称
21          * @throws IOException
22          */
23         public static void copyDir(String FromDir, String ToDir) throws IOException
24         {
25             // 创建目录的File对象
26             File srcDir = new File(FromDir);
27             // 判断源目录是不是一个目录
28             if (!srcDir.isDirectory())
29             {
30                 // 如果不是目录那就不复制
31                 return;
32             }
33             // 创建目的目录的File对象
34             File destDir = new File(ToDir);
35             // 如果目的目录不存在
36             if (!destDir.exists())
37             {
38                 // 创建目的目录
39                 destDir.mkdir();
40             }
41 
42             // 获取源目录下的File对象列表,每一个对象代表一个目录或者文件
43             File[] srcDirList = srcDir.listFiles();
44             // 遍历源目录File对象列表
45             for (int i = 0; i < srcDirList.length; i++)
46             {
47                 // 如果是目录的话
48                 if (srcDirList[i].isDirectory())
49                     
50                 {
51                     // 递归调用复制该目录
52                     copyDir(FromDir + File.separator + srcDirList[i].getName(),
53                             ToDir + File.separator + srcDirList[i].getName());
54                 }
55                 // 如果是文件的话
56                 if (srcDirList[i].isFile())
57                 {
58                     // 调用复制文件的方法
59                     copyFile(FromDir + File.separator + srcDirList[i].getName(),
60                             ToDir + File.separator + srcDirList[i].getName());
61                 }
62 
63             }
64         }
65         /**
66          * 复制一个文件
67          * 
68          * @param srcFile
69          *            源文件
70          * @param destFile
71          *            目的文件
72          * @throws IOException
73          */
74         public static void copyFile(String srcFile, String destFile)
75                 throws IOException
76         {
77             FileInputStream in = new FileInputStream(srcFile);
78             FileOutputStream out = new FileOutputStream(destFile);
79             // 2097152(Byte)=2048(KB)=2M
80             byte[] buffer = new byte[2097152];
81             int size = 0;
82             // 每次读取一个字节数组
83             while ((size = in.read(buffer)) != -1)
84             {
85                 // 读到多少写入多少
86                 out.write(buffer, 0, size);
87             }
88             in.close();
89             out.close();
90         }
91 
92     }
93     

用户指定源目录、目标目录以及备份文 件类型(如果是任意文件使用通配符*号),通过此程序可将源目录及其所有子目录 下的指定类型文件保存到目标目录

原文地址:https://www.cnblogs.com/BigWatermelon/p/10679904.html