zoukankan      html  css  js  c++  java
  • 平时作业五 Java

    使用I/O流和文件对象实现目录备份功能。用户指定源目录、目标目录以及备份文件类型(如果是任意文件使用通配符*号),通过此程序可将源目录及其所有子目录下的指定类型文件保存到目标目录。

     1 package com.tiger.practice;
     2 import java.io.File;
     3 import java.io.FileInputStream;
     4 import java.io.FileOutputStream;
     5 import java.io.IOException;
     6 public class Homework5 {
     7     
     8         public static void main(String[] args) throws IOException
     9         {
    10             copyDir("D:\10 cd onedrive\OneDrive - mail.cdu.edu.cn\2 大学文档\02 secondary docu\01 学科文档\15 Java", "D:\吴芝冰\Desktop");
    11         }
    12         /**
    13          * 使用递归复制目录,
    14          * 
    15          * @param FromDir
    16          *            源目录的路径名称
    17          * @param ToDir
    18          *            目的目录的路径名称
    19          * @throws IOException
    20          */
    21         public static void copyDir(String FromDir, String ToDir) throws IOException
    22         {
    23             // 创建目录的File对象
    24             File srcDir = new File(FromDir);
    25             // 判断源目录是不是一个目录
    26             if (!srcDir.isDirectory())
    27             {
    28                 // 如果不是目录那就不复制
    29                 return;
    30             }
    31             // 创建目的目录的File对象
    32             File destDir = new File(ToDir);
    33             // 如果目的目录不存在
    34             if (!destDir.exists())
    35             {
    36                 // 创建目的目录
    37                 destDir.mkdir();
    38             }
    39 
    40             // 获取源目录下的File对象列表,每一个对象代表一个目录或者文件
    41             File[] srcDirList = srcDir.listFiles();
    42             // 遍历源目录File对象列表
    43             for (int i = 0; i < srcDirList.length; i++)
    44             {
    45                 // 如果是目录的话
    46                 if (srcDirList[i].isDirectory())
    47                     
    48                 {
    49                     // 递归调用复制该目录
    50                     copyDir(FromDir + File.separator + srcDirList[i].getName(),
    51                             ToDir + File.separator + srcDirList[i].getName());
    52                 }
    53                 // 如果是文件的话
    54                 if (srcDirList[i].isFile())
    55                 {
    56                     // 调用复制文件的方法
    57                     copyFile(FromDir + File.separator + srcDirList[i].getName(),
    58                             ToDir + File.separator + srcDirList[i].getName());
    59                 }
    60 
    61             }
    62         }
    63         /**
    64          * 复制一个文件
    65          * 
    66          * @param srcFile
    67          *            源文件
    68          * @param destFile
    69          *            目的文件
    70          * @throws IOException
    71          */
    72         public static void copyFile(String srcFile, String destFile)
    73                 throws IOException
    74         {
    75             FileInputStream in = new FileInputStream(srcFile);
    76             FileOutputStream out = new FileOutputStream(destFile);
    77             // 2097152(Byte)=2048(KB)=2M
    78             byte[] buffer = new byte[2097152];
    79             int size = 0;
    80             // 每次读取一个字节数组
    81             while ((size = in.read(buffer)) != -1)
    82             {
    83                 // 读到多少写入多少
    84                 out.write(buffer, 0, size);
    85             }
    86             in.close();
    87             out.close();
    88         }
    89 
    90     }
  • 相关阅读:
    1028 人口普查 (20分)
    1027 打印沙漏 (20分)
    1026 程序运行时间 (15分)
    1025 反转链表 (25分)
    1024 科学计数法 (20分)
    1023 组个最小数 (20分)
    1022 D进制的A+B (20分)
    1021 个位数统计 (15分)
    1020 月饼 (25分)
    1019 数字黑洞 (20分)
  • 原文地址:https://www.cnblogs.com/CheeseIce/p/10768676.html
Copyright © 2011-2022 走看看