2.Java IO流体系图:" />
当前位置: 代码迷 >> J2SE >> 2.Java IO流体系图:
  详细解决方案

2.Java IO流体系图:

热度:169   发布时间:2016-04-23 19:51:55.0
J2SE知识点归纳笔记(七)---Java IO Part 2:获取键盘输入与IO流体系图

J2SE知识点归纳笔记(七)---Java IO Part 2:获取键盘输入与IO流体系图

                                                                ——转载请注明出处:coder-pig


本节引言:


好了,上一节中我们给大家介绍了File与RandomAccessFile类的用法,本节我们还是讲一些

常用的东西,如果学过C++或者C的朋友都知道,获取键盘的输入都很简单,scanf( )和cin就可以

获得我们从控制台输入的参数了,或者说捕获键盘的输入吧~而在Java中呢?貌似我们用

的最多的是:syso吧,但这是打印输出的..好吧,本节就先来讲解几种控制台输入参数或数据

的方法,接着呢,再给大家介绍Java IO流体系图,让大家对Java中IO所用到的流有个基本的了解

废话不多说,开始本节内容~得意



1.Java获取键盘输入的几种方法:


1)单个字符的输入:

就是说,使用下述方法虽然可以获取到键盘的输入,但是只获取一个字符!!!

如果你想获取的是一个汉字,就算了吧,另外要对异常进行捕获哦...

代码如下:

import java.io.IOException;public class StringTest {	public static void main(String[] args) {		char c;		try {			c = (char) System.in.read();			System.out.println("键盘输入的字符是:"+c);		} catch (IOException e) {			e.printStackTrace();		}	}}

运行截图:





2)使用BufferedReader类和InputStreamReader类:

对于输入的是一条字符串的话,就需要涉及到:

BufferedReader类和InputStreamReader这两个字节流了

代码也很简单:

public static void main(String[] args) {		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));		String str = null;		System.out.println("输入一串字符:");		try {			str = br.readLine();		} catch (IOException e) {			e.printStackTrace();		}		System.out.println("打印输出的字符:\n"+str);	}



3)使用的Scanner类:

JDK 1.5推出的一个新特性,美其名曰:简化扫描,该类提供了很多的方法,但是该类最实用

的方法还是获取控制台输入,所以这里只讲获取控制台输入...

Scanner提供的几个常用方法:

next( ):获得一个字符串;

nextInt():将取得的字符串转换成int类型的整数;

nextFloat():将取得的字符串转换成float型;

nextBoolean():将取得的字符串转换成boolean型;

nextLine():读取该行剩余的所有的内容,包括换行符,然后把焦点移动到下一行的开头


PS:当我们按下:空格符,包括空格键,Tab键和Enter键随便一个键,就算结束了输入过程,

     另外要注意区分nextLine( )与其他方法的区别哦~


示例代码:

		Scanner s1 = new Scanner(System.in);		//用于区分next()与nextLine()的区别		System.out.println("next( )方法输入字符串");		String s2 = s1.next();		System.out.println("得到的字符串:" + s2 + "长度为:" + s2.length());		System.out.println("nextLine( )方法输入字符串");		String s3 = s1.nextLine();		System.out.println("得到的字符串:" + s3 + "长度为:" + s3.length());		//获取键盘输入字符串的方法,把注释去掉就可用了~://		 System.out.println("请输入字符串:"); //         while (true) { //                 String line = s1.nextLine(); //                 if (line.equals("end")) break; //                 System.out.println("你输入的是:" + line); //         } 	}

运行截图:




4)通过args在命令行输入:

我们都知道main( )方法有一个参数:String[] args,我们可以通过在命令

行输入参数,然后直接在主程序中args[i]来访问:

示例代码:

public class JavaTest2 {	public static void main(String[] args) {		for (int i = 0; i < args.length; i++)			System.out.println(args[i]);	}}

运行截图:





2.Java IO流体系图:

1.)流的概念:

(文绉绉的专业(ZB)解析):数据流是一串连续不断的数据的集合,就象水管里的水流,

在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段,

一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。


简单理解:

比如你的电脑,想打开一个PDF的文件,而你的文件是存储在计算机硬盘上的,打开就是需要对文件进行解码,

然后把内容显示到PDF阅读器上,这里就是硬盘的数据->以流的形式传递到->内存的一个过程,这里就涉及到了IO流!

这样也验证了流的两个特性:源端和目的端(发送流,接收流);有方向!

根据流的方向又可以分为:输出流与输入流!

输出流:一般是从计算机流向外设的数据流

输出流:一般是从外设流入计算机的数据流



如果还不理解这个概念的话,举个形象的例子吧:



流是有方向的,如果自来水厂把生活污水从自来水管排到你家...闭嘴



2.)Java IO流体系图:

上面我们按流方向把流分成了输入流与输出流!

接下来我们按传输的数据单位进行分类:字节流与字符流!

对应的基类(父类)是:InputStream,OutputStream和Reader,Writer

还衍生了很多超类(子类):辅助流,缓冲流,过滤流等,下面就来看下他们的体系结构图:

ps:其实大部分输入流与输出流都是一一配对的,看图就知道了~


①InputStream字节流体系结构图:




②OutputStream字节流体系结构图:




③Reader字符流体系结构图:





④Writer字符流体系结构图:








最后说两句:


Java IO中为我们提供的流操作有关的类与接口都已经罗列出来了,看上去很多,我们并不需要全部掌握,

知道有这东西就可以了,用到的时候再查文档或者Google就可以了~

好了,关于本节获得键盘输入与IO流体系结构图,就讲解到这里,下一节我们学习的是:

字节流InputStream与OutputStream类与其子类的用法~敬请期待大笑








  相关解决方案