zoukankan      html  css  js  c++  java
  • InputStream (字节流读取)

    InputStream (字节流读取)

    java.io.InputStream InputStream是一个抽象类. 字节流可以操作任何类型的2进制文件

    InputStream常用实现类的继承关系

    • java.lang.Object
      • java.io.InputStream
        • java.io.FileInputStream
          • java.io.BufferedInputStream

    常用子类就是FileInputStream 和 BufferedInputStream

    InputStream共性方法 (子类通用)

    返回值和修饰符 方法 说明
    void close() 关闭此输入流并释放与该流关联的所有系统资源。
    (推荐在finally中关闭)
    abstract int read() 从输入流中读取数据的下一个字节。
    int read(byte[] b) 从输入流中读取一定数量的字节,
    并将其存储在缓冲区数组 b 中。
    int read(byte[] b, int off, int len) 将输入流中最多 len 个数据字节读入 byte 数组。

    FileInputStream子类

    (普通流)作为子类,我们可以学习他的创建对象的方式,而方法都是从父类继承来的。一个一个读取

    构造方法

    构造方法 说明
    FileInputStream( String name ) 传入一个文件路径
    FileInputStream( File file ) 传入一个FIle对象

    读取文件示例:

    main方法中代码

    try {
        // 1. 创建对象 -- 参数是文件路径
        String path = "D:\DEV\eclipse\workspace\day13\testIO.txt";
        InputStream in = new FileInputStream(path);
        // 第二种方式创建对象 -- 参数是一个File对象
        // InputStream in = new FileInputStream(new File(path));
        // 2. 开始读取	
        int b = -2;
        while ((b = in.read()) != -1) {
            System.out.println(b);
        }
        // 释放资源
        in.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    BufferedInputStream子类

    BufferedInputStream(也称为 缓冲流) 为另一个输入流添加一些功能,创建一个内部缓冲区数组。(高效), 按块读取, 默认缓冲区大小: 8192(8KB), 这个缓冲区默认最合适, 一般不需要修改

    构造器

    第二种不常用, 默认缓冲区大小性能已经很好了, 一般不修改

    构造器 说明
    BufferedInputStream( InputStream in ) 一般 传入一个FileInputStream
    BufferedInputStream( InputStream in, int size ) size是指定缓存区大小,(一般不用)系统默认是8192(8KB)

    读取文件实例:

    main方法中代码

    try {
        // 1. 创建对象
        String path = "D:\DEV\eclipse\workspace\day13\testIO.txt";
        InputStream in = new BufferedInputStream(new FileInputStream(path));
        // 2. 开始读取
        int b = 0;
        while ((b = in.read()) != -1) {
            System.out.println(b);
        }
        // 3. 释放资源
        in.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    
  • 相关阅读:
    [LeetCode] 965. Univalued Binary Tree
    [LeetCode] 811. Subdomain Visit Count
    [LeetCode] 509. Fibonacci Number
    [LeetCode] 1200. Minimum Absolute Difference
    [LeetCode] 590. N-ary Tree Postorder Traversal
    input单选框美化——自定义样式
    input单选框——获取选中值和设置选中值
    [LeetCode] 933. Number of Recent Calls
    mysql 一次性插入的数据量过大报错max_allowed_packet解决方法
    springboot+mybatis+达梦数据库
  • 原文地址:https://www.cnblogs.com/zpKang/p/12917719.html
Copyright © 2011-2022 走看看