IO流笔记.docx
- 文档编号:2398005
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:8
- 大小:265.39KB
IO流笔记.docx
《IO流笔记.docx》由会员分享,可在线阅读,更多相关《IO流笔记.docx(8页珍藏版)》请在冰豆网上搜索。
IO流笔记
JAVA流技术(IO编程)
流的作用:
如何从能够发送字节序列的任何数据源取得输入,以及如何将输出发送到能够接收字节序列的任何目的地。
即:
输入/输出问题。
字节序列的源和目的地可以是文件、网络连接、内存块等,存储在文件中的信息和从网络连接中接收的信息,从本质上处理方法是相同的。
数据最终都保存为一个字节序列,但是在程序设计中应当用更高级的数据结构来处理,如字符或对象序列等。
java.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能;
可以从不同的角度对其进行分类:
按数据流的方向不同可以分为输入流和输出流。
(以程序的角度来考虑)
按处理数据单位不同可以分为字节流和字符流。
按照功能不同可以分为节点流和处理流。
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)
throwsIOException
关闭流释放内存资源
voidclose()throwsIOException
将输出流中缓冲的数据全部写出到目的地
voidflush()throwsIOException
Reader
继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16bit);下图中深色为节点流,浅色的为处理流。
Reader的基本方法
读取一个字符并以整数的形式返回(0~255),如果返回-1已到输入流的末尾。
intread()throwsIOException
读取一系列字符并存储到一个数组buffer,返回实际读取的字符数,如果读取前已到输入流的末尾返回-1
intread(char[]cbuf)throwsIOException
读取length个字符并存储到一个数组buffer,从off位置开始存,最多读取len返回实际读取的字符数,如果读取前以到输入流的末尾返回-1
intread(char[]cbuf,intoff,intlen)
throwsIOException
关闭流释放内存资源
voidclose()throwsIOException
Writer
继承自Writer的流都是用于程序中输入数据,且数据的单位为字符(16bit);下图中深色为节点流,浅色为处理流。
Writer的基本方法
向输出流中写入一个字符数据,该字节数据为参数b的低16位
voidwrite(intc)throwsIOException
将一个字符类型的数组中的数据写入输出流,
voidwrite(char[]cbuf)throwsIOException
将一个字符类型的数组中的从指定位置(offset)开始的length个字符写入到输出流
voidwrite(char[]cbuf,intoffset,intlength)
throwsIOException
将一个字符串中的字符写入到输出流
voidwrite(Stringstring)throwsIOException
将一个字符串从offset开始的length个字符写入到输出流
voidwrite(Stringstring,intoffset,intlength)
throwsIOException
关闭流释放内存资源
voidclose()throwsIOException
将输出流中缓冲的数据全部写出到目的地
voidflush()throwsIOException
节点流类型
访问文件
FileInputStream和FileOutputStream分别继承自InputStream和OutputStream用于向文件中输入和输出字节。
FileInputStream和FileOutputStream的常用构造方法:
FileInputStream(Stringname)throwsFileNotFoundException
FileInputStream(Filefile) throwsFileNotFoundException
FileOutputStream(Stringname)throwsFileNotFoundException
FileOutputStream(Filefile) throwsFileNotFoundException
FileOutputStream(Filefile,booleanappend)
throwsFileNotFoundException
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)
throwsIOException
publicFileWriter(StringfileName)throwsIOException
publicFileWriter(StringfileName,booleanappend)
throwsIOException
publicFileReader(StringfileName)
throwsFileNotFoundException
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IO 笔记