打印流解决的是OutputStream的缺陷,BufferedReader解决的是InputStream的缺陷,
Scanner在Java.util.包中,解决的是BufferedReader类
Scannner 主要解决扫描流的程序类,利用这个类可以方便的处理各种数据类型,也可以直接结合正则表达式来进行各项处理。主要关注:
1 判断是否有指定类型的数据hasNextLong
2 取得置顶类型的数据 public nextLong
3定义分隔符public Scanner useDelimiter(String pattern)【调用了正则】
构造方法 public Scanner(InputStream input)
Scanner scanner =new Scanner(System.in);
因为System.in 是InputStream 的 一个方法。比BUfferedReader 要简单一点。
hasNext() 不能判断为空。减少转型处理。
如果需要一个int 数据,则
if(scanner.hasNextInt()){
int age=scan.nextInt();} 表示,只有数据为Int的时候,才能给age进行赋值。极其便捷。可以用正则表达式进行判断。
Scanner 本身可以接收一个InputStreem类的对线,同样也可以接受文件输入流。
Scanner 完美替代BufferedReader,更好地实现了InputStream的操作
总结,除了二进制文件的拷贝操作,程序信息输出用打印流,输入则采用Scanner 流