Java - IO 扫描流:Scanner

Posted wangyuyang1016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java - IO 扫描流:Scanner相关的知识,希望对你有一定的参考价值。

IO_扫描流:Scanner

在改进输出功能不足方面提供了打印流(PrintSream);利用BufferedReader类(缓冲输入流)解决了大文本数据的输入和读取操作,但是BufferedReader类在读取数据时只可以按照字符串方式读取(public String readLine();)且固定使用换行\n作为分隔符,由此暴露出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("\r\n");//设置 、\r\n 作为换行符
        while(scan.hasNext()) 
            System.out.println(scan.next());
        
        scan.close();
    
 

总结

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

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

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

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

以上是关于Java - IO 扫描流:Scanner的主要内容,如果未能解决你的问题,请参考以下文章

JAVA基础-----IO流基本概念

JAVA基础-----IO流基本概念

JAVA基础-文件IO

Java工程师必备精选文章50篇:IO流反射机制注解

用 Java 重新创建扫描仪

Java Scanner语法