2015年12月9日16:37:07
Java流本质问题分析
作者:数据分析玩家
从学习Java流到现在,我认为最关键的就是对于流这个概念的理解,
书本上的解释是:流就是程序和设备之间嫁接起来的一根用于数据传输的管道,这个设备可以是本地硬盘、可以是内存条,也可以是网络所关联的另外一台计算机等等,其中不同管道上有不同的按钮,按下不同的按钮相当于调用不同的方法,这根带按钮的用于用于数据传输的管道就是流,即流就是一根管道.
从这个概念中:我们得出的结论是流就是一根管道,用于数据的传输
还有另外一个重要的问题:何为输入流与输出流?输入与输出到底是相对谁来说的?我从网上copy了一段很不错的话:按照数据流的方向不同可以分为输入流与输出流,其中输入与输出是相对于程序的角度而言的
对于流的认识,我们完全可以从另外一个角度来思考问题:从学习C语言、以及学习Java中流的知识以前,我们大脑中的输入设备就是键盘,输出设备就是显示器,但是学习完流以后完全打破了这个限制,输入设备以及输出设备我们可以自己进行设置,这个设备可以是本地硬盘、可以是内存条,也可以是网络所关联的另外一台计算机等等,所以java中流的引用,它的一个重要意义就在于:打破了传统意义上输入设备就是键盘,输出设备就是显示器的这种局限性,用户可以自行设计输入设备与输出设备,从而进行数据的传输
我们知道java中的四大抽象流分别为:InputStream、Reader、OutputStream、Writer,其中前两个为输入流,后两个为输出流,我们可以这样理解:输入流我们可以设置输入设备,默认的是键盘,输出流我们可以设置输出设备,默认的是显示器,下面举2个例子:
例子1:
Scanner sc = new Scanner(System.in);
i = sc.nextInt();//即我们习惯的是输如设备是键盘
但是通过java中流的引用
FileInputStream fr = new FileInputStream(指定设备);
i = fr.read(); //通过流的引用,我们可以自己改变输入设备
例子2:
System.out.println(i);//即我们习惯的是输出设备是显示器
但是通过java中流的引用:
FileOutputStream fw = new FileOutputStream(指定设备);
fw.write(i);//通过流的引用,我们可以自己改变输出设备
因此当我们理解了java中流的意义之后,流的概念,以及输入输出方向也就不难理解了