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();
}
原文地址:https://www.cnblogs.com/zpKang/p/12917719.html