Scanner是新增的一个简易文本扫描器,在 JDK 5.0之前,是没有的。查看最新在线文档:
- public final class Scanner
- extends Object
- implements Iterator<String>, Closeable
可见,Scanner是没有子类的。
在JDK API关于Scanner提供了比较多的构造方法与方法。那么现在列出一些在平时工作中比较常用的方法,仅供大家参考:
构造方法:
- public Scanner(File source) throws FileNotFoundException
- public Scanner(String source)
- public Scanner(InputStream source) //用指定的输入流来创建一个Scanner对象
方法:
- public void close() //关闭
- public Scanner useDelimiter(String pattern) //设置分隔模式 ,String可以用Pattern取代
- public boolean hasNext() //检测输入中,是否,还有单词
- public String next() //读取下一个单词,默认把空格作为分隔符
- public String nextLine() //读行
- 注释:从hasNext(),next()繁衍了大量的同名不同参方法,这里不一一列出,感兴趣的,可以查看API
以下一个综合例子:
- package com.ringcentral.util;
- import java.util.*;
- import java.io.*;
- /**
- * author @dylan
- * date @2012-5-27
- */
- public class ScannerTest {
- public static void main(String[] args) {
- file_str(true);
- reg_str();
- }
- /**
- *
- * @param flag : boolean
- */
- public static void file_str(boolean flag){
- String text1= "last summber ,I went to the italy";
- //扫描本文件,url是文件的路径
- String url = "E:\\Program Files\\C _ Code\\coreJava\\src\\com\\ringcentral\\util\\ScannerTest.java";
- File file_one = new File(url);
- Scanner sc= null;
- /*
- * 增加一个if语句,通过flag这个参数来决定使用那个构造方法。
- * flag = true :输入结果为本文件的内容。
- * flag = false :输入结果为 text1的值。
- */
- if(flag){
- try {
- sc =new Scanner(file_one);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- }else{
- sc=new Scanner(text1);
- }
- while(sc.hasNext())
- System.out.println(sc.nextLine());
- //记得要关闭
- sc.close();
- }
- public static void reg_str(){
- String text1= "last summber 23 ,I went to 555 the italy 4 ";
- //如果你只想输入数字:23,555,4;可以设置分隔模式,把非数字进行过滤。
- Scanner sc = new Scanner(text1).useDelimiter("\\D\\s*");
- while(sc.hasNext()){
- System.out.println(sc.next());
- }
- sc.close();
- }
- }
- public static void input_str(){
- Scanner sc = new Scanner(System.in);
- System.out.println(sc.nextLine());
- sc.close();
- System.exit(0);
- }