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类与其子类的用法~敬请期待