目录
一、字节流的概述
- 可以直接操作字节信息的流对象
- 根据流向,可以分成字节输入流和字节输出流
- 顶层抽象父类分别是:InputStream 和 OutputStream
- 根据交互设备的不同,有不同的具体子类
二、InputStream
字节输入流的顶层抽象父类。
1、常用方法
read():从当前的字节输入流中,获取一个字节 read(byte[] arr):将arr.length个字节,读取到arr中 |
InputStream是一个抽象类,不能直接创建对象,只能由子类创建对象,最常用子类 FileInputStream,用于和磁盘上的文件进行交互。
2、FileInputStream构造方法
FileInputStream(File f):将File对象封装成字节输入流,将来可以读取这个文件中的信息 FileInputStream(String path):将字符串封装成字节输入流,将来可以读取信息 |
示例
InputStream is = new FileInputStream("F:/aaa.txt");
File file = new File("F:/aaa.txt");
InputStream is = new FileInputStream(file);
3、read() 方法
一次读到一个字节。输出这个数据到控制台上发现,显示的是数字而不是字母。为什么?因为显示的是字母对应的码值,如果需要转成字符,可以强转成char类型。
当read()的值为 -1 时,表示读到文件的末尾。
InputStream is = new FileInputStream("F:/aaa.txt");
// 使用字节流逐个读取
int a = is.read(); // 一次读一个字节
System.out.println((char)a);
int b = is.read();
System.out.println(b);
int c = is.read();
System.out.println(c);
int d = is.read();
System.out.println(d);
int e = is.read();
System.out.println(e);
int f = is.read();
System.out.println(f);
int g = is.read();
System.out.println(g); // -1表示文件读完
使用循环读取
int x = 0;
while((x =