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


注:本文转载自coder-pig

原文链接:http://blog.csdn.net/coder_pig/article/details/45288573




好久没来水了,原谅我年少无知不会改BUG~~~~~~静下心来,用心发现BUG,改它,改好它。。。。。。






本节引言:


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

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

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

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

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

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



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


1)单个字符的输入:

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

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

代码如下:

  1. import java.io.IOException;  
  2.   
  3. public class StringTest {  
  4.     public static void main(String[] args) {  
  5.         char c;  
  6.         try {  
  7.             c = (char) System.in.read();  
  8.             System.out.println("键盘输入的字符是:"+c);  
  9.         } catch (IOException e) {  
  10.             e.printStackTrace();  
  11.         }  
  12.     }  
  13. }  

运行截图:





2)使用BufferedReader类和InputStreamReader类:

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

BufferedReader类和InputStreamReader这两个字节流了

代码也很简单:

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



3)使用的Scanner类:

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

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

Scanner提供的几个常用方法:

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

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

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

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

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


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

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


示例代码:

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

运行截图:




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

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

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

示例代码:

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

运行截图:





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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值