java.io.InputStream :此抽象类是表示字节输入流的所有类的超类。
定义了所有子类的共性方法:
- abstract int read() :从输入流中读取数据的下一个字节。
- int read(byte[] b) :从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
- void close() 关闭此输入流并释放与该流关联的所有系统资源。
文件字节输入流
FileInputStream :文件字节输入流
作用:把硬盘文件中的数据读取到内存中
构造方法
- FileInputStream(File file) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
- FileInputStream(FileDescriptor fdObj) 通过使用文件描述符 fdObj 创建一个 FileInputStream,该文件描述符表示到文件系统中某个实际文件的现有连接。
- FileInputStream(String name) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
作用:
- 创建FileInputStream对象
- 会把FileInputStream对象指定构造方法中要读取的文件
字节输入流读取字节数据
读取数据原理(硬盘–>内存):
java程序–>JVM–>OS–>OS调用读取数据的方法–>读取文件
字节输入流的使用步骤:
- 创建FileInputStream对象,构造方法中绑定要读取的文件
- 使用FileInputStream对象中的方法read,读取文件
- 释放资源
1 2 3 4 5 6 7 8 9 10
FileInputStream fis = new FileInputStream("E:\\Down\\a.txt"); for (int i=0,read;i<3;i++) { read = fis.read(); System.out.println(read); } fis.close(); 输出结果: //文件内容:12 49 50 -1 //读取完毕
使用字节流读取中文的问题
UTF-8:三个字节来表示一个中文,read方法读取一个中文相当于读取三个字节,将读取到的字节(1/3的中文)转换为字符时,中文会存在乱码情况
赏
谢谢你请我吃糖果
支付宝
微信