IO流案例:1.复制多级文件夹 2.删除多级文件夹

package copy;
/*
    需求:复制多级文件夹
        复制d:\itcast(包含文件和子文件夹)到模块目录下
    分析:
        d:\itcast
            a.txt
            b.txt
            javaweb
                a.xml
                b.xml
        模块\itcast
            javaweb
                a.xml
                b.xml
            a.txt
            b.txt
    思路:
        1.判断源文件是目录还是文件
        2.是目录:
            1.源目录名+目的目录,创建新目录File对象
            2.判断新目录File是否存在,不存在则创建
            3.获取源目录文件列表
            4.遍历得到每个源文件对象
            5.递归调用copyFolder方法
        3.是文件:
            复制源文件到目的目录
 */

import java.io.*;

public class CopyFolder {
    public static void main(String[] args) throws IOException {
        //创建源目录
        File srcFolder = new File("d:\itcast");
        //创建目的目录
        File dstFolder = new File("day10Home");

        //调用复制方法,复制目录或文件
        copyFolder(srcFolder, dstFolder);
    }

    /**
     * 文件是否存在的检查工作,应该由方法调用者保证。
     * @param src
     * @param dst
     * @throws IOException
     */
    private static void copyFolder(File src, File dst) throws IOException {
        //1.是目录
        if(src.isDirectory()){
            //1.源目录名+目的目录,创建新目录File对象
            File newFolder = new File(dst, src.getName());

            //2.判断新目录File是否存在,不存在则创建
            if(!newFolder.exists())
                newFolder.mkdir();

            //3.获取源目录文件列表
            File[] fileArray = src.listFiles();

            //4.遍历得到每个源文件对象
            for(File srcFile : fileArray){
                //5.递归调用copyFolder方法
                copyFolder(srcFile, newFolder);
            }
        }else{
            // 2.是文件,根据目的目录+源文件名,创建新文件
            File newFile = new File(dst, src.getName());
            copyFile(src, newFile);
        }
    }

    private static void copyFile(File srcFile, File newFile) throws IOException {
        //  创建字节缓冲流对象
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));

        //  读写数据,一次读写一个字节数组
        byte[] bys = new byte[1024];
        int len;
        while((len = bis.read(bys)) != -1){
            bos.write(bys, 0, len);
        }

        //  释放资源
        bos.close();
        bis.close();
    }
}

  案例2:删除多级文件夹

 1 package deletefolder;
 2 
 3 import java.io.File;
 4 
 5 /*
 6     需求:
 7         将d:\itcast多级文件夹删除
 8     d:\itcast
 9         javaweb
10             a.xml
11         a.txt
12         b.txt
13     思路:
14         1.是否是目录
15         是目录:
16             2.获取文件列表
17             3.遍历文件列表得到每个文件对象
18             4.递归调用删除方法,删除目录中的每一项内容
19         2.直接删除src,此时src要么是空目录,要么是文件。
20 
21  */
22 public class DeleteFolder {
23     public static void main(String[] args) {
24         //创建要删除的多级目录
25         File file = new File("day10Home\itcast");
26 
27         //调用方法删除多级目录
28         deleteFolder(file);
29 
30     }
31 
32     private static void deleteFolder(File src) {
33         //1.是否是目录
34         if(src.isDirectory()){
35             //2.获取文件列表
36             File[] fileArray = src.listFiles();
37 
38             //3.遍历文件列表得到每个文件对象
39             for(File file : fileArray){
40                 //4.递归调用删除方法,删除目录中的每一项内容
41                 deleteFolder(file);
42             }
43         }
44         //5.将src删除,此时src要么是空目录,要么是文件。
45         src.delete();
46     }
47 }
原文地址:https://www.cnblogs.com/mozq/p/10651956.html