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();
}