天天看點

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();
    }           

結束