字节输入流一次读取多个字节和练习_文件复制

字节输入流一次读取多个字节

字节输入流一次读取多个字节的方法:

  int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。

需要知道两件事情:

  1.方法的参数byte[]的作用? 起到缓冲作用,存储每次读取到的多个字节

     数组的长度一把定义为1024(1kb)或者1024的整数倍

  2.方法的返回值int是什么?

     每次读取的有效字节个数

String类的构造方法

  String( byte[] bytes):把字节数组转换为字符串

  String(byte[ ] bytes,int offset, int length)把字节数组的一部分转换为字符串 offset :数组的开始索引Length :转换的字节个数

    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("F:\\a3.txt");
        byte[] bytes = new byte[2];
        int len = fis.read(bytes);
        System.out.println(len);//2
        System.out.println(new String(bytes));//AB

        len = fis.read(bytes);
        System.out.println(len);//2
        System.out.println(new String(bytes));//CD

        len = fis.read(bytes);
        System.out.println(len);//1
        System.out.println(new String(bytes));//ED

        len = fis.read(bytes);
        System.out.println(len);//-1
        System.out.println(new String(bytes));//ED

        fis.close();
    }

上面代码重复可以使用循环

 

原理图:

 

练习_文件复制

原理:从已有文件中读取字节,将该字节写出到另一个文件中

数据源读取数据通过读写文件写出数据到目的地

    public static void main(String[] args) throws IOException {
        //创建一个字节输入流对象,构造方法中绑定要读取的数据源
        FileInputStream fis = new FileInputStream("F:\\1.jpg");
        //创建一个字节输出流对象,构造方法中绑定要写入的目的地
        FileOutputStream fos = new FileOutputStream("F:\\a\\1.jpg");
        //使用数组缓冲读取多个字节,写入多个字节
        byte[] bytes = new byte[1024];
        //使用字节输入流对象的方法read读取文件
        int len;
        while ((len=fis.read(bytes))!=-1){
            //使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中
            fos.write(bytes,0,len);
        }
        //关流(先关写的,后关读的;如果写完了,肯定读取完毕了)
        fos.close();
        fis.close();
    }

 

 

 

posted @ 2022-07-13 13:37  魔光领域  阅读(48)  评论(0编辑  收藏  举报