美文网首页
字节流读取

字节流读取

作者: Jycoding | 来源:发表于2022-07-21 20:50 被阅读0次

字节流是由字节组成的,字符流是由字符组成的.

Java里字符由两个字节组成.字节流是基本流,主要用在处理二进制数据。

所以字节流是比较常用的,可以可以处理多种不同种类的文件,比如文本文档/音频/视频等等

4.1 InputStream抽象类

此抽象类是表示字节输入流的所有类的超类/抽象类,不可创建对象哦

常用方法:

abstract int read() 从输入流中读取数据的下一个字节

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

int read(byte[] b, int off, int len) 将输入流中最多 len 个数据字节读入 byte 数组,off表示存时的偏移量

void close() 关闭此输入流并释放与该流关联的所有系统资源

4.2 FileInputStream子类

直接插在文件上,直接读取文件数据

创建对象

FileInputStream(File file)—直接传文件对象

通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定FileInputStream(String pathname)—传路径

通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定

4.3 BufferedInputStream子类

BufferedInputStream 为另一个输入流添加一些功能,在创建BufferedInputStream 时,会创建一个内部缓冲区数组(默认8k大小)。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。

创建对象

BufferedInputStream(InputStream in)

创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。

package cn.tedu.file;

import java.io.*;

/*本类用于练习字节输入流*/

public class TestIn {

    public static void main(String[] args) {

        //method();//字节流的读取

        method2();//高效字节流的读取

    }

    //本方法用于测试高效字节流的读取

    private static void method2() {

        //定义一个在本方法中都生效的局部变量in,注意手动初始化,值为null

        InputStream in = null;

        try {

            //1.创建高效字节输入流对象

//            InputStream in = new BufferedInputStream(

//                    new FileInputStream(new File("E:\\ready\\1.txt")));

              in = new BufferedInputStream

                      (new FileInputStream("E:\\ready\\1.txt"));

            //2.使用流进行读取

            int b;

            while ((b= in.read())!= -1){

                System.out.println(b);

            }

        } catch (Exception e) {

            e.printStackTrace();

        }finally {//关流操作写在finally{}中

            //3.流用完以后一定要关闭!!!

            try {

                in.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

    //本方法用于测试字节流的读取

    private static void method() {

        //创建一个在本方法都生效的局部变量注意手动初始化

        InputStream in = null;

        try {

            //1.创建字节输入流对象用于读取

            //InputStream in = new InputStream();//报错原因:抽象类不可实例化

            //InputStream in = new FileInputStream(new File("E:\\ready\\1.txt"));

            in = new FileInputStream("E:\\ready\\1.txt");

            //2.开始读取

            /*read()每次调用都会读取一个字节,如果读到了数据的末尾,返回-1*/

//            System.out.println(in.read());

//            System.out.println(in.read());

//            System.out.println(in.read());

//            System.out.println(in.read());

            //需求:需要循环读取文件中的所有内容,直至读完

            //定义变量,记录读到的数据

            int b;

            while((b=in.read())!= -1){

                System.out.println(b);

            }

        } catch (Exception e) {

            e.printStackTrace();//打印错误信息

        /*try-catch结构中的第三个部分:finally{}

        * 这部分不论是否捕获到异常,是一定会被执行到的代码,常用于关流*/

        }finally {

            try {

                //3.释放资源,流资源用完必须释放!!!

                in.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

}

相关文章

  • IO流 2018-05-07

    字节流和字符流: 1字节流(均为抽象类):在字节流中定义了方法read(),用于从字节流中读取对象: public...

  • Java文件的几种读取、输出方式

    1、字节流----对文件读取(速度慢) 2、带缓存的字节流---文件读取(速度快) 3、字节流reader,这个方...

  • GIN复制字节流

    正常读取字节流(直接读空) 复制字节流

  • 字节流读取

    字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.字节流是基本流,主要用在处理二进制数据...

  • java基础io流——字符流的变革(深入浅出)

    乱码导火索: 在io流里,先诞生了字节流,但是字节流读取数据会有乱码的问题(读中文会乱码)。比如: 从文件中读取中...

  • Java 基础 43 转换流

    1.1 转换流出现的原因 1.1.1 字节流读数据可能出现问题   字节流一次读取一个字节的方式读取带有汉字的文件...

  • Java笔记之文件

    本笔记来自 计算机程序的思维逻辑 系列文章 字节流 InputStream int read()从流中读取下一个字...

  • 10.3-全栈Java笔记:常用流详解(一)

    文件字节流 FileInputStream通过字节的方式读取文件,适合读取所有类型文件(图像、视频、文本文件等)。...

  • 10.3-全栈Java笔记:常用流详解(一)

    文件字节流 FileInputStream通过字节的方式读取文件,适合读取所有类型文件(图像、视频、文本文件等)。...

  • IO流

    IO流 Input:输入流,用于读取数据 Output:输出流,用于写数据 IO分类 字节流 字节流就是读和取都是...

网友评论

      本文标题:字节流读取

      本文链接:https://www.haomeiwen.com/subject/dxrpirtx.html