众所周知,java因其简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点深受移动开发者们的欢迎,随着移动智能市场的逐步发展,移动开发产业也逐渐蓬勃发展起来,而要想进行移动开发方面的工作,我们就得首先了解java这一语言。为此本次的讲解课课家笔者将为大家简单介绍java输入输出流的基本概念,让大家对java的输入输出有一个基本概念。
由于Java的I/O系统中的输入输出流其强大的封装性,所以我们能够通过各种组合实现多种多样的功能。但是Java给我们提供了多种输入输出流类,而且在概念和使用上有很多类似之处从而给我们带来不少困扰,何时应该用何种输入输出流类便成为一个值得思考的难题。不过大家不用担心,在本次的讲解中笔者将为大家理清具体的思路。下面笔者先给大家介绍输入输出流类。
◎stream
stream代表的是任何有能力产出数据的数据源或者是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Input和Outstream)都包括两种类型:以字节为导向的stream和以Unicode字符为导向的stream。
①以字节为导向的stream:表示以字节为单位从stream中读取或往stream中写入信息。
通常以字节为导向的stream包括下面几种类型:
input stream:
● Byte Array Input Stream:把内存中的一个缓冲区作为Input Stream使用
● String Buffer Input Stream:把一个String对象作为Input Stream
● File Input Stream:把一个文件作为Input Stream,实现对文件的读取操作
● Piped Input Stream:实现了pipe的概念,主要在线程中使用
● Sequence Input Stream:把多个Input Stream合并为一个Input Stream
Out stream:
● Byte Array Output Stream:把信息存入内存中的一个缓冲区中
● File Output Stream:把信息存入文件中
● Piped Output Stream:实现了pipe的概念,主要在线程中使用
● Sequence Output Stream:把多个Out Stream合并为一个Out Stream
②以Unicode字符为导向的stream
以Unicode字符为导向的stream:表示以Unicode字符为单位从stream中读取或往stream中写入信息。
通常以Unicode字符为导向的stream包括下面几种类型:
Input Stream:
● Char Array Reader:与Byte Array Input Stream对应
● String Reader:与String Buffer Input Stream对应
● File Reader:与File Input Stream对应
● Piped Reader:与Piped Input Stream对应
Out Stream:
● Char Array Write:与Byte Array Output Stream对应
● String Write:无与之对应的以字节为导向的stream
● File Write:与File Output Stream对应
● Piped Write:与Piped Output Stream对应
总结:以字符为导向的stream基本上对有与之相对应的以字节为导向的stream。两个对应类实现的功能相同,字是在操作时的导向不同。比如Char Array Reader:和Byte Array Input Stream的作用都是把内存中的一个缓冲区作为Input Stream使用,所不同的是前者每次从内存中读取一个字节的信息,而后者每次从内存中读取一个字符。
③两种不现导向的stream之间的转换
Input Stream Reader和Output Stream Reader:把一个以字节为导向的stream转换成一个以字符为导向的stream。
◎为stream添加属性
①"为stream添加属性”的作用
运用上面介绍的Java中操作IO的API,我们就可完成我们想完成的任何操作了。通过Filter Input Stream和Filter Out Stream的子类,我们可以为stream添加属性。下面笔者以往一个文件中写入数据来进行简单说明。如果我们要想往一个文件中写入数据来,具体我们写入以下代码:File Out Streamfs=new File Out Stream(“test.txt”);。接下来我们就可以通过产生的fs对象调用write()函数来往test.txt文件中写入数据了。但是如果我们想实现“先把要写入文件的数据先缓存到内存中,再把缓存中的数据写入文件中”的功能时,上面的API就没有一个能满足我们的需求了。那么如何解决这个问题呢?其实我们可以通过Filter Input Stream和Filter Out Stream的子类,为File Out Stream添加我们所需要的功能。
②Filter Input Stream的各种类型
用于封装以字节为导向的Input Stream
● Data Input Stream:从stream中读取基本类型(int、char等)数据。
● Buffered Input Stream:使用缓冲区
● Line Number Input Stream:会记录inputstream内的行数,然后可以调用gET Line Number()和set Line Number(int)
● Push back Input Stream:很少用到,一般用于编译器开发
用于封装以字符为导向的Input Stream
● 没有与Data Input Stream对应的类。除非在要使用read Line()时改用Buffered Reader,否则使用Data Input Stream
● Buffered Reader:与Buffered Input Stream对应
● Line Number Reader:与Line Number Input Stream对应
● Push Back Reader:与Push back Input Stream对应
③Filter Out Stream的各种类型
用于封装以字节为导向的Output Stream
● Data Output Stream:往stream中输出基本类型(int、char等)数据。
● Buffered Out Stream:使用缓冲区
● Print Stream:产生格式化输出
用于封装以字符为导向的Output Stream
● Buffered Write:与Buffered Out Stream对应
● Print Write:与Print Stream对应
◎RandomAccessFile
①可通过Random Access File对象完成对文件的读写操作
②在产生一个对象时,可指明要打开的文件的性质:r,只读;w,只写;rw可读写
③可以直接跳到文件中指定的位置
下面笔者给出输入输出流应用实例让大家参考参考。笔者在main函数中给出6个代码段,说明各个输入输出流类的使用方法,并在代码段后有相应注释说明。
以上就是代码例子的完整演示,相信大家观察了以上的简单说明,对Java输入输出流类的基本概念也有比较清晰的认识了解了。
本次的移动开发学堂之java输入输出流的讲解到此就暂告一段落了,如果以后有什么相关的内容进行补充或者修改的话,笔者会继续在此进行相关的内容的继续补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充。最后笔者希望本次的讲解对大家学习移动开发能够起到一定的帮助作用!
¥398.00
¥98.00
¥199.00
¥179.00