zoukankan      html  css  js  c++  java
  • Java

    IO_扫描流:Scanner

    在改进输出功能不足方面提供了打印流(PrintSream);利用BufferedReader类(缓冲输入流)解决了大文本数据的输入和读取操作,但是BufferedReader类在读取数据时只可以按照字符串方式读取(public String readLine();)且固定使用换行 作为分隔符,由此暴露出BufferedReader类的功能不足以未来的大发展。

    Scanner类

    • java.util.Scanner:(JDK 1.5

      • 专门负责解决输入流的操作问题
      public final class Scanner
      extends Object
      implements Iterator<String>
      
    • 构造方法:

    public Scanner(File source)
    public Scanner(InputStream source)
    public Scanner(Readable source)
    public Scanner(ReadableByteChannel source)
    public Scanner(String source)
    
    • 类方法

    判断是否有指定数据:

    public boolean hasNextXxx();
    // 举例:
    public boolean hasNext();//表示有数据
    public boolean hasNextDouble();//表述输入的是小数
    

    取出数据:

    public String nextXxx();
    // 举例:
    public String next();//默认返回字符串
    public double nextDouble();//自动转型返回double数据
    

    除了利用hasNextXxx() 和 nextXxx() 方法判断数据以外,在hasNext() 和 next() 方法中支持使用正则表达式对数据进判断

    public boolean hasNext(regax);
    public String next(regax);
    

    实例:

    public class TestDemo {
    	public static void main(String [] args) throws IOException {
    		// 准备接收键盘输入数据;System.in是InputStream型
    		Scanner scan = new Scanner(System.in);
    		if (scan.hasNextString()) {//判断是否有数据
    			System.out.println(scan.next()); //输出
    		}
    		scan.close();
    	}
    } 
    
    • 设置分隔符
    public Scanner useDelimiter(String pattern);
    
    public class TestDemo { 
    	public static void main(String [] args) throws IOException {
    		Scanner scan = new Scanner(new FileInputStream(new File("F:"+File.separator+"demo"+File.separator+"demo.txt")));
    		scan.useDelimiter("
    ");//设置 、
     作为换行符
    		while(scan.hasNext()) {
    			System.out.println(scan.next());
    		}
    		scan.close();
    	}
    } 
    

    总结

    在读取数据的时候,综合角度:Scanner类 比 BufferedReader 简单;在发现Scanner无法实现的时候再使用BufferedReader

    • InputStream类的功能不足问题被 Scanner 类解决

    • Reader类的功能不足问题被 BufferedReader 类解决

    • OutputStream类的功能不足问题被 PrintStream 类解决

    • Writer类的功能不足问题被 PrintWrite 类解决

  • 相关阅读:
    坚持的力量 第十五篇
    <QT障碍之路>qt中使用串口类接收数据不完整
    《开发板 — ping得通本地,但是不能上网。route设置默认网关》
    《海思3531D 搭建环境出现的一些问题》
    《应用编程 — 进程通信 — 命名管道FIFO》
    <QT学习>QT中串口QSerialport类学习与使用
    网络视频工具/网站
    [恢]hdu 1701
    [恢]hdu 1425
    [恢]hdu 2523
  • 原文地址:https://www.cnblogs.com/wangyuyang1016/p/11182080.html
Copyright © 2011-2022 走看看