IO流 IO流概述及其分类
1、IO概念
IO(Input/Output):输入和输出,指的是某个设备或者环境进行数据的输入或者输出。例如:键盘的输入,再比如显示器是输出设备,输出图像, 对于Java来说输入输出的问题,java将它抽象成流对象来解决。IO流用来处理设备之间的数据传输,Java对数据的操作是通过流的方式,Java用于操作流的类都在IO包中。
流按流向分为两种:
1----输入流(读取数据)
2----输出流(写数据)
流按操作类型分为两种:
字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
字符流 : 字符流只能操作纯字符数据,比较方便。
2、常用的IO流类
字节流的抽象父类
InputStream
OutputStream
字符流的抽象父类:
Reader
Writer
InputStream & FileInputStream 文件输入流
InputStream是抽象类,表示字节输入流。
直接已知子类:
●AudioInputStream
●ByteArrayInputStream
●FileInputStream(学习文件输入流)
●FilterInputStream
●ObjectInputStream
●PipedInputStream
●SequenceInputStream
●StringBufferInputStream
3、FileInputStream 文件输入流
概述
FileInputStream 从文件系统中的某个文件中获得输入字节。FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader
构造方法
FileInputStream(File file)
FileInputStream(String name)
成员方法
int read() 从此输入流中读取一个数据字节。
案例:读取一个txt文件数据(方法一)
知识点
1.FileInputStream用于读取文件数据,在构造方法中传入文件对象
2.构造方法,有可能抛出文件找不到的异常
3.read方法是每次读取一个字节的数据,把字节转成int返回
读取数据也会抛出异常,比如突然文件某部份数据损坏了
读取的数据是文件编码的表值(ascii,GBK,unicode)
ascii是包含在GBK或者unicode中的
如果读取数据到最后,会返回一个-1(代表读完数据了)
4.文件不用后,要关闭输入流,避免占用资源
package lesson10;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
* 读取txt文件内容
* 1.通过FileInputStream来读取txt文件内容
* 2.读取内容通过read方法,
* 》read方法每次读文件1个字节(byte),把byte转成int返回
》当读到后的时候,返回-1,-1表示读取文件结束
3.当读完文件后,这个输入流要关闭,释放资源
*
*/
public class Demo01 {
public static void main(String[] args) throws IOException {
//FileNotFoundException fnfe;
//案例:读取txt文件内容
//1.创建一个文件对象
File file = new File("a.txt");
//2.创建一个文件输入流【读取文件数据】对象
FileInputStream fis1 = new FileInputStream(file);
//再创建一个文件输入 流对象
FileInputStream fis2 = new FileInputStream("b.txt");
//3.读取a.txt的数据
/**
* 1.read方法每次读文件1个字节(byte),把byte转成int返回
* 2.当读到后的时候,返回-1,-1读取文件结束
*/
System.out.println(fis1.read());
System.out.println(fis1.read());
System.out.println(fis1.read());
System.out.println(fis1.read());
//4.关闭流
fis1.close();
fis2.close();
}
}