javaIO流实现复制和删除文件夹

拿来即用 ,不理解欢迎留言。

package banban.CopyOrDeleteFile;

import java.io.*;

/**
 * @ClassName CopyOrDeleteFile
 * @Author zhang-peng-zhan
 * @Date 2018/11/8 17:40
 *
 *         copyFile方法 需要参数      File:需要复制的文件
 *                                   newFile:复制的新文件
 *         copyFolder方法 需要参数    Folder:需要复制的文件夹
 *                                   newFolder:复制的新文件夹
 *         deleteFolder 方法 需要参数  File :需要删除的文件或者文件夹
 */
public class CopyOrDeleteFile {
    public static void copyFile(File file , File newfile){
        //复制的文件不止文本文件,所以采用字节流复制
        //缓冲字节流,字节数组复制
        try(BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(newfile))
            )
        {
            byte[] bytes = new byte[1024];
            int hasRead ;
            while ((hasRead=bufferedInputStream.read(bytes))>0){
                bufferedOutputStream.write(bytes,0,hasRead);
                bufferedOutputStream.flush();
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
        //分析:
        //  A:封装数据源scrFile
        //  B:封装目的地destFile
        //  C:判断scrfile是文件夹还是文件
        //      a:是文件夹
        //          就在目的地下创建文件夹
        //          获取该File对象下所有文件或者文件夹File对象
        //          遍历得到每一个File对象
        //          回到C
        //      b:是文件
        //          复制(字节流)
    public static void copyFolder(File scrfile,File destfile){
        if (scrfile.isDirectory()){
            //不是文件
            //  就在目的地下创建文件夹
            File newFolder = new File(destfile,scrfile.getName());
            newFolder.mkdir();
            //获取该File对象下所有文件或者文件夹File对象
            File[] fileArray = scrfile.listFiles();
            for (File file : fileArray){
                copyFolder(file,newFolder);  //递归
            }
        }else {
            //是文件
            //复制
            File newfile = new File(destfile,scrfile.getName());
            copyFile(scrfile,newfile);  //调用复制文件的方法
        }
    }
    //递归删除多级文件夹或文件
   public static void deleteFolder(File file) {
        if (file.isFile()){
            file.delete();
        }else {
            File[] files = file.listFiles();
            for (File f : files) {
                if (f.isFile()) {
                    //如果是文件就直接删除
                    f.delete();
                } else {
                    //如果是文件夹就递归调用
                    deleteFolder(f);
                }
            }
            //删除空目录
            file.delete();
        }
}

你可能感兴趣的:(java思想,解题思路,java工具)