《io输入输出流》ppt课件

上传人:tian****1990 文档编号:75828971 上传时间:2019-02-01 格式:PPT 页数:32 大小:393.31KB
返回 下载 相关 举报
《io输入输出流》ppt课件_第1页
第1页 / 共32页
《io输入输出流》ppt课件_第2页
第2页 / 共32页
《io输入输出流》ppt课件_第3页
第3页 / 共32页
《io输入输出流》ppt课件_第4页
第4页 / 共32页
《io输入输出流》ppt课件_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《《io输入输出流》ppt课件》由会员分享,可在线阅读,更多相关《《io输入输出流》ppt课件(32页珍藏版)》请在金锄头文库上搜索。

1、输入输出流,本章内容,Java 流式输入/输出原理 Java流类的分类 输入/输出流类 常见的节点流和处理流 文件流 缓冲流 字符集和编码 数据流 转换流 Print流 Object流 NIO简介,Java流式输入/输出原理,在Java程序中,对于数据的输入/输出操作以“流” (stream) 方式进行;J2SDK提供了各种各样的“流”类,用以获取不同种类的数据;程序中通过标准的方法输入或输出数据。,流是一个很形象的概念,I/O 流提供一条通道程序,可以使用这条通道把源中的字节序列送给目的地。把输入流的指向称做源,程序从指向源的输入流中读取源中的数据。而输出流的指向是字节要去的一个目的地(或用

2、户),程序通过向输出流中写入数据把信息传递到目的地。虽然I/O 流经常与磁盘文件存取有关,但是程序的源和目的地也可以是键盘、鼠标、内存或显示器窗口。,输入/输出流的分类,java.io 包中定义了多个流类型(类或抽象类)来实现输入/输出功能;可以从不同的角度对其进行分类: 按数据流的方向不同可以分为输入流和输出流。(以程序的角度来考虑) 按处理数据单位不同可以分为字节流和字符流。 按照功能不同可以分为节点流和处理流。 J2SDK 所提供的所有流类型位于包java.io内都分别继承自以下四种抽象流类型。,节点流和处理流,节点流为可以从一个特定的数据源(节点)读写数据(如:文件,内存),处理流是“

3、连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。,InputStream,继承自InputSteam的流都是用于向程序中输入数据,且数据的单位为字节(8 bit);下图中深色为节点流,浅色为处理流。,InputStream的基本方法,/读取一个字节并以整数的形式返回(0255), /如果返回-1已到输入流的末尾。 int read() throws IOException /读取一系列字节并存储到一个数组buffer, /返回实际读取的字节数,如果读取前已到输入流的末尾返回-1 int read(byte buffer) throws IOExcepti

4、on /读取length个字节 /并存储到一个字节数组buffer,从off位置开始存,最多len /返回实际读取的字节数,如果读取前以到输入流的末尾返回-1 int read(byte buffer, int off, int len) throws IOException /关闭流释放内存资源 void close() throws IOException,OutputStream,继承自OutputSteam的流是用于程序中输入数据,且数据的单位为字节(8 bit);下图中深色为节点流,浅色为处理流。,OutputStream的基本方法,/向输出流中写入一个字节数据,该字节数据为参数b的

5、低8位 void write(int b) throws IOException /将一个字节类型的数组中的数据写入输出流 void write(byte b) throws IOException /将一个字节类型的数组中的从指定位置(off)开始的 /len个字节写入到输出流 void write(byte b, int off, int len) throws IOException /关闭流释放内存资源 void close() throws IOException /将输出流中缓冲的数据全部写出到目的地 void flush() throws IOException,良好的编程习惯先

6、flush() 再close(),Reader,继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16 bit);下图中深色为节点流,浅色的为处理流。,Reader 的基本方法,/读取一个字符并以整数的形式返回(0255), /如果返回-1已到输入流的末尾。 int read() throws IOException /读取一系列字符并存储到一个数组buffer, /返回实际读取的字符数,如果读取前已到输入流的末尾返回-1 int read(char cbuf) throws IOException /读取length个字符 /并存储到一个数组buffer,从off位置开始存

7、,最多读取len /返回实际读取的字符数,如果读取前以到输入流的末尾返回-1 int read(char cbuf, int off, int len) throws IOException /关闭流释放内存资源 void close() throws IOException0,Writer,继承自Writer的流都是用于程序中输入数据,且数据的单位为字符(16 bit);下图中深色为节点流,浅色为处理流。,Writer 的基本方法,/向输出流中写入一个字符数据,该字节数据为参数b的低16位 void write(int c) throws IOException /将一个字符类型的数组中的数

8、据写入输出流, void write(char cbuf) throws IOException /将一个字符类型的数组中的从指定位置(offset)开始的 /length个字符写入到输出流 void write(char cbuf, int offset, int length) throws IOException /将一个字符串中的字符写入到输出流 void write(String string) throws IOException /将一个字符串从offset开始的length个字符写入到输出流 void write(String string, int offset, int l

9、ength) throws IOException /关闭流释放内存资源 void close() throws IOException /将输出流中缓冲的数据全部写出到目的地 void flush() throws IOException,节点流类型,访问文件,FileInputStream和FileOutputStream分别继承自InputStream和OutputStream用于向文件中输入和输出字节。 FileInputStream和FileOutputStream的常用构造方法: FileInputStream(String name) throws FileNotFoundExc

10、eption FileInputStream(File file) throws FileNotFoundException FileOutputStream(String name)throws FileNotFoundException FileOutputStream(File file) throws FileNotFoundException FileOutputStream(File file, boolean append) throws FileNotFoundException,FileInputSteam 和 FileOutputStream 类支持其父类InputStre

11、am 和OutputStream 所提供的数据读写方法。 注意: 在实例化FileInputStream和FileOutputSteam流时要用trycatch语句以处理其可能抛出的FileNotFoundException。 在读写数据时也要用trycatch语句以处理可能抛出的 IOException。 FileNotFoundException是IOException的子类,例:TestFileInputStream.java / TestFileOutputStream.java,访问文件,FileReader 和 FileWriter 分别继承自Reader和Writer,FileI

12、nputSteam与FileOutputStream类似,所不同的时FileReader和FileWriter向文件输入和输出的数据单位为字符。 FileReader和FileWriter的常用构造方法:,public FileWriter(File file) throws IOException public FileWriter(File file, boolean append) throws IOException public FileWriter(String fileName)throws IOException public FileWriter(String fileNam

13、e,boolean append) throws IOException public FileReader(String fileName) throws FileNotFoundException public FileReader(File file) throws FileNotFoundException,例:TestFileWriter.java / TestFileReader.java,处理流类型,缓冲流,缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。 J2SDK提供了四种缓存流,其常用的构造方法为:,Buffere

14、dReader(Reader in) BufferedReader(Reader in,int sz) /sz 为自定义缓存区的大小 BufferedWriter(Writer out) BufferedWriter(Writer out,int sz) BufferedInputStream(InputStream in) BufferedInputStream(InputStream in,int size) BufferedOutputStream(OutputStream out) BufferedOutputStream(OutputStream out,int size),Buff

15、eredReader提供了readLine方法用于读取一行字符串(以r或n分隔) BufferedWriter提供了newLine用于写入一个行分隔符。 对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法将会使内存中的数据立刻写出。,例:TestBufferStream1 / 2.java,转换流,InputStreamReader和OutputStreamWriter用与字节数据到字符数据之间的转换。 InputStreamReader 需要和 InputStream “套接” 。 OutpStreamWriter 需要和 OutputStream “套接” 。 转换流在构造时

16、可以指定其编码集合,例如: InputStream isr = new InputStreamReader (System.in, “ISO8859_1”),例:TestTransform1 / 2.java,nio:异步IO,非阻塞,什么是字符集?什么是编码?,字符(Character):是文字与符号的总称,包括文字、图形符号、数学符号等。 字符集(Charset):就是一组抽象字符的集合。 字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集。 一组有共同特征的字符也可以组成字符集,比如繁体汉字字符集、日文汉字字符集。 编码(Encoding): 制定编码首先要确定字符集,并将字符集内的字符排序,然后和二进制数字对应起来。根据字符集内字符的多少,会确定用几个字节来编码。,常用字符集有哪些?,ASCII American Standard Code for Information Interchange,美国信

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号