java里面使用字节缓冲流复制单级文件夹

1.demo效果

实现单级文件夹的复制,单级文件夹就是文件夹里面只有文件,没有文件
把D:\A_安卓心得\java后端\waitForCopy 下面的waitForCopy文件夹复制到C:\Users\Administrator\IdeaProjects\Day07下面
实现步骤:
1.创建源文件file对象 使用构造方法
2.获得一下源文件file对象 的文件名 使用getName()
3.创建要复制文件的file对象 判断这个文件名是否存在,不存在就创建
使用exist() mkdir()
4.获得源文件目录下面的所有文件的file数组
5.遍历数组 数组的元素就是要被复制的文件
6.开始复制文件

2.注意点和方法

(1) 思想就是我们在构造File 对象的时候要把文件和文件前面的文件夹目录分开
(2)File创建对象的三个构造方法
File(String pathname); // 参数是一个路径字符串
File(String parent , String child ) // 从父路径名和子路径名字符串创建新的File实例
File(File parent , String child ) // 从父路径名和子路径名字符串创建新的File实例
后两个相当与是吧后面的两个参数拼接起来形成一个File对象,就是可以把文件和文件前面的文件夹目录分开
(3)因为文件里面不一定都是字符文件 所以要用字节流
字节缓冲流的讲解 字节缓冲流的底层还是字节流,字节缓冲流构造方法的参数是字节流对象InputStream,OutputStream

3.代码展示

public static void main(String[] args) throws IOException {

        File res_dir = new File("D:\\A_安卓心得\\java后端\\waitForCopy");
       // System.out.println(file.exists());

        //我要复制文件就要得到源文件夹的名子以及文件里面文件的名字
        String res_dirName = res_dir.getName();
        System.out.println(res_dirName);

        //创建要复制文件的file对象 判断这个文件名是否存在,不存在就创建
         File des_dir = new File("C:\\Users\\Administrator\\IdeaProjects\\Day07",res_dirName);
         /*
          //注意File的构造方法有三个
          File(String pathname); // 参数是一个路径字符串
          File(String parent , String child ) // 从父路径名和子路径名字符串创建新的File实例
          File(File parent , String child ) // 从父路径名和子路径名字符串创建新的File实例
           后两个相当与是吧后面的两个参数拼接起来形成一个File对象
          */


         if (!des_dir.exists()){
             //创建文件夹
             des_dir.mkdir();
         }

         //4.获得源文件目录下面的所有文件的file数组
        File file1[] = res_dir.listFiles();

       //5遍历数组  数组的元素就是要被复制的文件
        for (File file2 : file1){

            //得到源文件夹下面的文件名
            String res_Filename = file2.getName();

            //开始创建源文件的路径
            File res_file = new File(res_dir,res_Filename);   //源文件夹名 + 源文件名
            File des_file = new File(des_dir,res_Filename);

            //使用字节缓冲流一次复制一个字节数组
            //输入流
            FileInputStream fis = new FileInputStream(res_file);
            BufferedInputStream bis = new BufferedInputStream(fis);

            //输出流
            FileOutputStream fos = new FileOutputStream(des_file);
            BufferedOutputStream bos = new BufferedOutputStream(fos);

            //创建数组一次读一个字节数组
            int len;
            byte by[] = new byte[1024];
            while ((len = bis.read(by)) != -1){

                //开始写
                bos.write(by,0,len);

            }


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


        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值