java.util.Scanner 在读取流的优点:
1、能直接转换为所有的数据类型。
2、可以指定分隔符。
public final class Scanner
extends Object
implements Iterator, Closeable
构造方法 | 说明 |
---|---|
Scanner(File source) | 接收文件 |
Scanner(InputStream source) | 接收输入流 |
Scanner(Readable source) | |
Scanner(String source) | |
主要方法:
返回类型 | 方法 | 说明 | 参数 |
---|---|---|---|
boolean | public boolean hasNext() | 是否存在数据,返回 true 时有数据。 | 类中有一组hasNextBoolean()、 hasNextDouble()等等判断是否有各种类型数据的方法,可以直接对各类型判断。 |
String | public String next() | 提取数据。返回String。 | 类中包含有一组对各类型数据读取的方法,如: nextBoolean()、nextFloat()、nextInt()。。。 |
Scanner | public Scanner useDelimiter(String pattern) | 设置分隔符 | String pattern 指定字符串分隔符。 |
Scanner | public Scanner useDelimiter(Pattern pattern) | 设置一个正则表达式作为分隔符 | |
例1:使用 Scanner 接收键盘输入的信息 。
import java.util.Scanner;
/**
* @author
*
*/
public class ScannerDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner scan = new Scanner(System.in);
System.out.print("请输入年龄:");
if (scan.hasNextInt()) { // 判断输入的值是否是整数类型,如果是提出出求和显示输入值。
int age = scan.nextInt();
System.out.println("年龄是:" + age);
} else {
System.err.println("需要输入一个整数年龄。");
}
scan.close(); // 关闭
}
}
例2:使用正则判断输入的日期是否正确
import java.util.Scanner;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
/**
* @author
*
*/
public class ScannerReadDateDemo {
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// TODO 自动生成的方法存根
Scanner scan = new Scanner(System.in);
System.out.print("请输入您的生日:");
String str = null;
Date birthday = null; //生日
if (scan.hasNext("^\\d{4}-\\d{2}-\\d{2}$")) {// 正则验证是否为日期
str = scan.next("^\\d{4}-\\d{2}-\\d{2}$");// 接收字符串
birthday = new SimpleDateFormat("yyyy-MM-dd").parse(str);
System.out.println(birthday);
} else {
System.err.println("输入的日期格式错误!");
}
scan.close();
}
}
例3:分行读取一个参数文本文件:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
/**
* 分行读取一个参数文本文件
* @author
*
*/
public class ScannerReadFileDemo {
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
// TODO 自动生成的方法存根
File file = new File("d:" + File.separator + "Java" + File.separator + "temp" + File.separator + "myinfo.txt");
// 判断文件是否存在,如果不存在退出!
if (!file.exists()) {// 判断文件是否存在
System.out.println("指定的“" + file.getName() + "”文件不存在,退出!");
return;
}
Scanner scan = new Scanner(file); // 实例代 Scanner 扫描器
scan.useDelimiter("\r\n"); // 以换行符作为分隔符
// 循环读出文件中的每一行数据
while (scan.hasNext()) {
System.out.println(scan.next()); // 以分隔符读取一行,直到最尾没有数据为止。
}
scan.close(); // 关闭
}
}