IO流有很多种,按照操作数据的不同,可以分为字节流和字符流,按照数据传输方向的不同又可分为输入流和输出流,程序从输入流中读取数据,向输出流中写入数据,在IO包中,字节流的输入输出流分别用java.io.InputStream和java.io.outputStream表示,字符流的输入输出流分别用java.io.reader和java.io.writer表示。
8.1字节流的概念
8.1.1字节流的概念
IO流中针对字节的输入输出提供了一系列的流,统称为字节流。字节流是程序中最常用的流,根据数据的传输方向可将其分为字节输入流和字节输出流。
InputStream的常用方法:
int read()//从输入流读取一个8位的字节,把它转换为0~255之间的整数,并返回这一整数
int read(byte[]b)//从输入流读取若干字节,把它们保存到参数b指定的字节数组中,返回的整数表示读取字节数
int read(byte[]b,int off,int len)//从输入流读取若干字节,把它们保存到参数指定的字节数组中,off指定字节数组开始保存数据的起始下标,len表示读取的字节数目。
void close()//关闭此输入流并释放与该流关联的所有系统资源。
outputStream的常用方法
void write(int b)//向输出流写入一个字节
void write(byte[]b)//把参数b指定的字节数组的所有字节写到输出流。
void write(byte[]b,int off,int len)//将指定byte数组中从偏移量off开始的len个字节写入输出流。
void flush()//刷新此输出流并强制写出所有缓冲的输出字节。
void close()//关闭此输出流并释放与此相关的所有系统资源。
8.1.6字节缓冲流
在IO包中提供两个带缓冲的字节流,分别是BufferedInputStream和BufferdOutputaStream。这两个流都使用了装饰设计模式。它们的构造方法中分别接收InputStream和OutputaStream类型的参数作为被包装对象,在读写数据时提供缓冲功能。
8.2.2字符流操作文件
在程序开发中,经常需要对文本文件的内容进行读取,如果想从文件中直接读取字符便可以使用字符输入流fileReader,通过此流可以从关联的文件中读取一个或一组字符。
8.2.3LineNumberReader
Java程序在编译或运行期间经常会出现一些错误,在错误中通常会报告出错的行号,为了方便查找错误,需要在代码中加入行号。LineNumberReader它是BufferedReader的直接子类。
8.2.4转换流
有时字节流和字符流之间也需要进行转换,将字节流