• IO流学习之综合运用(文件复制)


    通过File、字节流、字节流缓冲区实现文件复制

    需求:

    1、用File类读取指定文件File下的所有文件(包括Copy文件夹内的所有文件)

    2、将所有文件复制到指定文件FileCopy夹下

    需求分析:

    1、需要先读取到指定的文件夹File

    2、判断File文件夹下的文件类型( 文件 or 文件夹 )

    3、把文件读取到内存中(递归查询文件)

    4、考虑指定文件夹FileCopy下不存在Copy文件夹怎么办?(分析File类的方法)

    5、把文件从内存中写到指定文件夹下

    代码实例:

     1 package InputOutput;
     2 
     3 import java.io.BufferedInputStream;
     4 import java.io.BufferedOutputStream;
     5 import java.io.File;
     6 import java.io.FileInputStream;
     7 import java.io.FileNotFoundException;
     8 import java.io.FileOutputStream;
     9 import java.io.IOException;
    10 
    11 public class CopyFileDemo {
    12     public static void main(String[] args) throws IOException {
    13         // 指定源文件路径
    14         String srcPath = "E:/JavaCodeDemo/InputOutput/File";
    15         // 指定目标文件路径
    16         String desPath = "E:/JavaCodeDemo/InputOutput/FileCopy";
    17         // 创建源File
    18         File srcFile = new File(srcPath);
    19         // 创建目标File
    20         File desFile = new File(desPath);
    21         // 复制文件
    22         copFile(srcFile, desFile);
    23         // 复制完成
    24         System.out.println("Success!");
    25     }
    26 
    27     public static void copFile(File srcFile, File desFile) throws IOException {
    28         // 获取所有文件和文件夹的集合
    29         File[] fileList = srcFile.listFiles();
    30         // 遍历集合
    31         for (File file : fileList) {
    32             // 判断是否为文件夹
    33             if (file.isDirectory()) {
    34                 // 获取文件夹名称
    35                 String folderName = file.getName();
    36                 // 创建目标路径File
    37                 File newFile = new File(desFile, folderName);
    38                 // 判断目标路径File对应的文件夹是否存在
    39                 if (!newFile.exists()) {
    40                     // 如果不存在创建新的文件夹
    41                     newFile.mkdirs();
    42                 }
    43                 // 循环调用方法获取创建所有文件夹
    44                 copFile(file, newFile);
    45             } else {
    46                 // 获取文件的名称
    47                 String name = file.getName();
    48                 // 根据文件名称创建新的File
    49                 File finalPathFile = new File(desFile, name);
    50                 // 调用IO流复制文件
    51                 IOStream(file, finalPathFile);
    52             }
    53         }
    54     }
    55 
    56     public static void IOStream(File file2, File finalFile) throws IOException {
    57         // 创建字节输入和输出流
    58         FileInputStream in = new FileInputStream(file2);
    59         FileOutputStream out = new FileOutputStream(finalFile);
    60         // 创建字节输入输出流缓冲区
    61         BufferedInputStream Bin = new BufferedInputStream(in);
    62         BufferedOutputStream Bout = new BufferedOutputStream(out);
    63         // 调用方法读取数据
    64         int flag = -1;
    65         byte[] b = new byte[1024];
    66         while ((flag = Bin.read(b)) != -1) {
    67             // 调用方法写数据
    68             Bout.write(b, 0, flag);
    69             Bout.flush();
    70         }
    71         // 关闭资源,先关写再关读
    72         Bout.close();
    73         Bin.close();
    74     }
    75 }

    结果:



     才疏学浅,如果有更好的方法欢迎留言指点,谢谢!

  • 相关阅读:
    【EntityFramework系列教程十,翻译】ASP.NET MVC程序中的一些高级应用
    对不含数据源的DataGridView实现自定义排序
    poj 1584 A Round Peg in a Ground Hole(叉积判断凸多边形)
    大整数运算
    poj 1408 Fishnet(计算几何)
    poj 1201 Intervals(第一道差分约束题)
    poj 2983 Is the Information Reliable?(差分约束)
    poj 2187 Beauty Contest(凸包+旋转卡壳)
    poj 2031 Building a Space Station(prim)
    poj 3007 Organize Your Train part II
  • 原文地址:https://www.cnblogs.com/Bernard94/p/11272853.html
Copyright © 2020-2023  润新知