• 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 类解决

  • 相关阅读:
    dev gridcontrol设置复选框列,和按数据选择行
    Django——三种方式上传文件/数据 (form ajax json)
    Django——ajax简单使用
    Django——ajax介绍,django内置序列化器
    阿里云oss 上传文件的两种方式(本地路径上传远程链接上传)
    easywechat 网页授权登录
    19。删除链表倒数第N个节点
    142环形链表II
    141环形链表
    701二叉搜索树中的插入操作
  • 原文地址:https://www.cnblogs.com/wangyuyang1016/p/11182080.html
Copyright © 2020-2023  润新知