Scanner
Scanner 扫描仪。
扫描仪是可将文件影像捕捉起来,以数字格式储存的计算机周边配备。影像撷取的方式是先将光线投射到文件上,因文件明暗不同的区域,使反射光有不同的强度,由CCD(Charge-Coupled Device,电荷耦组件)感光组件将反射回来的光转换为数字数据,再经由扫描软件读入数据,最后组成数字影像。扫描后的影像可以储存的档案格式有TIFF、EPS、BMP、GIF与PCX等格式。
在种类上,扫描仪大致上有:掌上型扫描仪(Handheld Scanner)、平台式扫描仪(Flatbed scanner)、馈纸型扫描仪(Sheetfed Scanner)、菲林扫描仪(Film Scanner)、大尺寸扫描仪(Large Format Scanner)、照相扫描仪(Camera Scanner)、滚筒式扫描仪(Drum Scanner)等。
Scanner Java.
java.lang.Object -->>> java.util.Scanner
所有已实现的接口-->>>Iterator<String>
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
例如,以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
再看一个例子,以下代码使 long 类型可以通过 myNumbers 文件中的项分配:
Scanner sc = new Scanner(new File("myNumbers"));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}
扫描器还可以使用不同于空白的分隔符。下面是从一个字符串读取若干项的例子:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\s*fish\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close(); 输出为:
1
2
red
blue
以下代码使用正则表达式同时解析所有的 4 个标记,并可以产生与上例相同的输出结果:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\d+) fish (\d+) fish (\w+) fish (\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close();
扫描器所使用的默认空白分隔符通过 Character.isWhitespace 来识别。不管以前是否更改,reset() 方法将把扫描器分隔符的值重置为默认空白分隔符。