前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java - IO 扫描流:Scanner

Java - IO 扫描流:Scanner

作者头像
Mirror王宇阳
发布2020-11-12 20:18:23
8270
发布2020-11-12 20:18:23
举报

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>

  • 构造方法:
代码语言:javascript
复制
public Scanner(File source)
public Scanner(InputStream source)
public Scanner(Readable source)
public Scanner(ReadableByteChannel source)
public Scanner(String source)
  • 类方法

判断是否有指定数据:

代码语言:javascript
复制
public boolean hasNextXxx();
// 举例:
public boolean hasNext();//表示有数据
public boolean hasNextDouble();//表述输入的是小数

取出数据:

代码语言:javascript
复制
public String nextXxx();
// 举例:
public String next();//默认返回字符串
public double nextDouble();//自动转型返回double数据

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

代码语言:javascript
复制
public boolean hasNext(regax);
public String next(regax);

实例:

代码语言:javascript
复制
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();
	}
} 
  • 设置分隔符
代码语言:javascript
复制
public Scanner useDelimiter(String pattern);
代码语言:javascript
复制
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 类解决
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IO_扫描流:Scanner
    • Scanner类
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com