现在的位置: 首页 > 综合 > 正文

IO流–输入输出

2014年02月18日 ⁄ 综合 ⁄ 共 2221字 ⁄ 字号 评论关闭

     使用任何语言编写的程序都会涉及到输入/输出操作,最常见的情况是输入来自键盘,而输出是到显示器.java中没有标准的输入和输出的语句,java中将信息的输入与输出过程抽象为输入输出流.输入是指数据流入程序.输出是指数据从程序流出.java中输入输出操作通常都是通过输入输出流来实现的.一个流就是一个从源流向目的地数据序列.输入输出流可以与各种数据源和目标相连.

     输入输出流就犹如咱们常见的水流,输入输出流和水流不同之处就是水流是我们可以看见摸得着的东西,而输入输出流在计算机各个部件之间流动,而我们看不见摸不着.下次谁再和你提起关于流,你就可以在脑海中想象水流,这样你就可以很容易的理解了流.

一.流

     流是数据的有序序列,它既可以是未加工的原始二进制数据,也可以是经过一定编码处理后的符合某种规定格式的特定数据.数据的性质,格式不同,则对流的处理方法也是不同的.流犹如朝不同方向飞奔的水流-

zwe

为了便于学习,流还可以进一步的细分一下:

若从流的方向划分,流可以分为输入流和输出流.

二.输入流

     为了从信息源获取信息,程序打开一个输入流,这个输入流便在信息源与程序之间建立连接,程序可以从数据流读取信息.




     在做Miss系统的时候,查询操作时大伙都很熟悉的一个功能,为了合作完成,咱们会把一个程序分成三层或者更多层,其中D层的作用就是从数据库中读取数据.那么这个时候,程序和数据库之间流动的就是输入流.



三.输出流

     当程序需要目标位置写信息是,便需要打开一个输出流,这个输出流便在程序与输出目标之间建立连接,程序通过输出流向这个目标位置写信息.


     咱们还是以熟悉的Miss系统为例.在界面输入一个查询条件,等待几秒,在显示屏幕就会出来你想要结果.这些结果是从程序中传送到显示屏的.

即一个查询操作中输入流和输出流.

若从流的分工划分,流可以分为节点流和处理流

四.节点流

可以从或向一个特定的地方(节点)读写数据。如FileReader


节点流犹如水池到打开的水龙头一根水管就可以解决问题了.

五.处理流

     对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。



     处理流犹如水池到打开的水龙头之间,因为水质的原因,需要多层水管来处理水,不同的的水管过滤不同的水质问题.

若从流的内容划分,流可以分为面向字符的流和面向字节的流

六.面向字符流

     字符流是针对字符数据的特点进行过优化的.因而提供一些面向字符的有用特性,字符流的源或目标通常是文本文件.Java技术通过Unicode保证了其跨平台特性,字符流可以实现java程序中的内部格式和文本文件,显示输出,键盘输入等外部格式之间的转换.

     Reader和Writer是java.io包中所有字符流的抽象基类.Reader提供了输入字符的API及其部分实现,Writer则提供了输出字符的API及其部分实现.

绝大多数程序使用Readerh和Writer这两个抽象类的一系列子类来读入和写出文本信息.






注:蓝色表示的是处理流,白色表示的是节点流

七.面向字节流

     在程序中,我们若要输出一句中文,用的是字符流输出,就会出现乱码,因为字符流是以1个字符为单位输出的,但是中国的汉字占2个字符,而且中国的汉字还不能进行拆分.为了解决这个问题,就需要使用字节流输出了.

     处理字符流的类InputStream 和OuteputStream是用来处理8为字节流的抽象基类,程序使用这两个类的子类来读写8位的字节信息.这种流通常被用来读写如图片,声音之类的二进制数据.





注:蓝色表示的是处理流,白色表示的是节点流

八.标准输入输出

java中有以下三个标准输入输出流:

标准输入System.in

标准输出System.out

标准错误输出 System.err

     System.in,System.outSystem.err都是System类中定义的类成员变量.System.inInputStream类型的,代表标准输入流,这个流是已经打开了的,默认状态对应于键盘输入.

System.outSystem.errorPrintStream类型的,代表标准输入流和标准错误信息输出流,默认状态对应屏幕输出.

	For example:
	import java.io.*;
	public class Echo
	{	
		public static void main(String[] args) throws IOException
		{
			BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
			String s;
			while((s=in.readLine()).length()!=0)
			{
				System.out.println(s);
			}
		}
	}

当我输入Hello!I'm Zoer,nice to meet you!的时候,它也会在屏幕上打印出同样的一句.如:


九.读写数据方法

     通常系统中有很多输入输出设备,一些只可以是数据源,如键盘,鼠标,扫描仪,一些只可以是目标,如显示器.无论数据从哪里来,到哪里去,也无论数据本身是何类类型,读写数据的方法大致是一样的.而且读写数据的方法和操作数据的方法相同,其实操作数据库也是一种读写数据.




抱歉!评论已关闭.