天天看点

IO小练习--使用io流剪切文件夹前言题目思路代码实现结束

前言

前面基本已经将io的大部分内容说完了,本篇文章呢,主要是为了练习前面的前面的知识点,加深对io的里的理解

题目

思路

  1. 首先使用递归的思路遍历文件夹里的所有东西,并判断是文件还是文件夹
  2. 使用所有文件的世界都是字节的特性,使用字节输入流进行读取
  3. 读取的同时使用字节输出流进行复制文本
  4. 复制完成后直接删除文件

代码实现

public static void main(String[] args) throws Exception{
        File srcfile=new File("D:\\codes\\zuoye10");
        File desfile=new File("D:\\zuoye10");

        copyDir(srcfile,desfile);

        srcfile.delete();

    }
    //复制文件夹
    public static void copyDir(File srcfile,File desfile) throws IOException {
        if(!desfile.exists()){
            desfile.mkdirs();
        }
        File[] files = srcfile.listFiles();

        for(File file:files){
            if(file.isFile()){
                copyFile(file,new File(desfile,file.getName()));
            }else if(file.isDirectory()){
                copyDir(file,new File(desfile,file.getName()));
                file.delete();
            }
        }
    }
    //文件的复制
    public static void copyFile(File srcfile,File desfile) throws IOException{
        //读写文件
        FileInputStream fis=new FileInputStream(srcfile);
        FileOutputStream fos=new FileOutputStream(desfile);
        BufferedInputStream bis = new BufferedInputStream(fis);//测试缓冲
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        int len;
        byte[] bys=new byte[10];
        while((len=bis.read(bys))!=-1){
            bos.write(bys, 0, len);
            bos.flush();
        }
        bos.close();
        bis.close();
        fos.close();
        fis.close();
        srcfile.delete();
    }           

结束