IO流笔记Word文档格式.docx
《IO流笔记Word文档格式.docx》由会员分享,可在线阅读,更多相关《IO流笔记Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
按处理数据单位不同可以分为字节流和字符流。
按照功能不同可以分为节点流和处理流。
J2SDK所提供的所有流类型位于包java.io内都分别继承自以下四种抽象流类型。
节点流和处理流:
节点流为可以从一个特定的数据源(节点)读写数据(如:
文件,内存)
处理流是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。
InputStream
继承自InputSteam的流都是用于向程序中输入数据,且数据的单位为字节(8bit);
下图中深色为节点流,浅色为处理流。
InputStream的基本方法
读取一个字节并以整数的形式返回(0~255),
如果返回-1已到输入流的末尾。
intread()throwsIOException
读取一系列字节并存储到一个数组buffer,
返回实际读取的字节数,如果读取前已到输入流的末尾返回-1
intread(byte[]buffer)throwsIOException
读取length个字节并存储到一个字节数组buffer,从off位置开始存,最多len
返回实际读取的字节数,如果读取前以到输入流的末尾返回-1
intread(byte[]buffer,intoff,intlen)
throwsIOException
关闭流释放内存资源
voidclose()throwsIOException
OutputStream
继承自OutputSteam的流是用于程序中输入数据,且数据的单位为字节(8bit);
OutputStream的基本方法
向输出流中写入一个字节数据,该字节数据为参数b的低8位
voidwrite(intb)throwsIOException
将一个字节类型的数组中的数据写入输出流
voidwrite(byte[]b)throwsIOException
将一个字节类型的数组中的从指定位置(off)开始的len个字节写入到输出流
voidwrite(byte[]b,intoff,intlen)
voidclose()throwsIOException
将输出流中缓冲的数据全部写出到目的地
voidflush()throwsIOException
Reader
继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16bit);
下图中深色为节点流,浅色的为处理流。
Reader的基本方法
读取一个字符并以整数的形式返回(0~255),如果返回-1已到输入流的末尾。
读取一系列字符并存储到一个数组buffer,返回实际读取的字符数,如果读取前已到输入流的末尾返回-1
intread(char[]cbuf)throwsIOException
读取length个字符并存储到一个数组buffer,从off位置开始存,最多读取len返回实际读取的字符数,如果读取前以到输入流的末尾返回-1
intread(char[]cbuf,intoff,intlen)
Writer
继承自Writer的流都是用于程序中输入数据,且数据的单位为字符(16bit);
Writer的基本方法
向输出流中写入一个字符数据,该字节数据为参数b的低16位
voidwrite(intc)throwsIOException
将一个字符类型的数组中的数据写入输出流,
voidwrite(char[]cbuf)throwsIOException
将一个字符类型的数组中的从指定位置(offset)开始的length个字符写入到输出流
voidwrite(char[]cbuf,intoffset,intlength)
将一个字符串中的字符写入到输出流
voidwrite(Stringstring)throwsIOException
将一个字符串从offset开始的length个字符写入到输出流
voidwrite(Stringstring,intoffset,intlength)
voidflush()throwsIOException
节点流类型
访问文件
FileInputStream和FileOutputStream分别继承自InputStream和OutputStream用于向文件中输入和输出字节。
FileInputStream和FileOutputStream的常用构造方法:
FileInputStream(Stringname)throwsFileNotFoundException
FileInputStream(Filefile)
throwsFileNotFoundException
FileOutputStream(Stringname)throwsFileNotFoundException
FileOutputStream(Filefile)
FileOutputStream(Filefile,booleanappend)
FileInputSteam和FileOutputStream类支持其父类InputStream和OutputStream所提供的数据读写方法。
注意:
在实例化FileInputStream和FileOutputSteam流时要用try-catch语句以处理其可能抛出的FileNotFoundException。
在读写数据时也要用try-catch语句以处理可能抛出的IOException。
FileNotFoundException是IOException的子类
FileReader和FileWriter分别继承自Reader和Writer,FileInputSteam与FileOutputStream类似,所不同的是
FileReader和FileWriter向文件输入和输出的数据单位为字符。
FileReader和FileWriter的常用构造方法:
publicFileWriter(Filefile)throwsIOException
publicFileWriter(Filefile,booleanappend)
publicFileWriter(StringfileName)throwsIOException
publicFileWriter(StringfileName,booleanappend)
publicFileReader(StringfileName)
publicFileReader(Filefile)
throwsFileNotFoundException
处理流类型
缓冲流
缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。
J2SDK提供了四种缓存流,其常用的构造方法为:
BufferedReader(Readerin)
BufferedReader(Readerin,intsz)//sz为自定义缓存区的大小
BufferedWriter(Writerout)
BufferedWriter(Writerout,intsz)
BufferedInputStream(InputStreamin)
BufferedInputStream(InputStreamin,intsize)
BufferedOutputStream(OutputStreamout)
BufferedOutputStream(OutputStreamout,intsize)
BufferedReader提供了readLine方法用于读取一行字符串(以\r或\n分隔)。
BufferedWriter提供了newLine用于写入一个行分隔符。
对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法将会使内存中的数据立刻写出。
转换流
InputStreamReader和OutputStreamWriter用与字节数据到字符数据之间的转换。
InputStreamReader需要和InputStream“套接”。
OutpStreamWriter需要和OutputStream“套接”。
转换流在构造时可以指定其编码集合,例如:
InputStreamisr=newInputStreamReader
(System.in,“ISO8859_1”)
数据流&
ByteArrayInputStream&
ByteArrayOutputStream
DataInputStream和DataOutputStream分别继承自InputSteam和OutputStream,它属于处理流,需要分别“套接”在InputStream和OutputStream类型的节点流上。
DataInputStream和DataOutputStream提供了可以存取与机器无关的Java原始类型数据(如:
int,double等)的方法。
DataInputStream和DataOutputStream的构造方法为:
DataInputStream(InputStreamin)
DataOutpu