Java中的Scanner类(java.util.Scanner)在Java 1.5中作为简单的文本扫描程序引入,它可以使用正则表达式解析基本类型和字符串。
Java Scanner类可用于使用任何正则表达式分隔符将输入分解为标记,并且它也适用于解析文件。
Scanner类可用于将文件数据读入原语。它还扩展了String split()方法,以将标记作为String,int,long,Integer和其他包装类返回。
Java Scanner示例
在这里,使用Scanner逐行读取文件,解析CSV文件以轻松创建java对象并从用户输入中读取。
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;
public class JavaFileScanner {
public static void main(String[] args) throws IOException {
/**
*/
String fileName = "D:/users/maxsu/source.txt";
Path path = Paths.get(fileName);
Scanner scanner = new Scanner(path);
// 逐行读取文件
scanner.useDelimiter(System.getProperty("line.separator"));
while(scanner.hasNext()){
System.out.println("Lines: "+scanner.next());
}
scanner.close();
// 读取CSV文件并将其解析为对象数组
scanner = new Scanner(Paths.get("D:/users/maxsu/data.csv"));
scanner.useDelimiter(System.getProperty("line.separator"));
while(scanner.hasNext()){
//解析行以获取Emp对象
Employee emp = parseCSVLine(scanner.next());
System.out.println(emp.toString());
}
scanner.close();
//从 System 读取输入
System.out.println("Read from system input:");
scanner = new Scanner(System.in);
System.out.println("Input first word: "+scanner.next());
}
private static Employee parseCSVLine(String line) {
Scanner scanner = new Scanner(line);
scanner.useDelimiter("\\s*,\\s*");
String name = scanner.next();
int age = scanner.nextInt();
String gender = scanner.next();
JavaFileScanner jfs = new JavaFileScanner();
return jfs.new Employee(name, age, gender);
}
public class Employee{
private String name;
private int age;
private String gender;
public Employee(String n, int a, String gen){
this.name = n;
this.age = a;
this.gender = gen;
}
@Override
public String toString(){
return "Name="+this.name+"::Age="+this.age+"::Gender="+this.gender;
}
}
}
上述程序的输出如下所示:
Lines: My Name is Maxsu
Lines: My website is kaops.com
Lines: Phone : 1234567890
Name=Maxsu::Age=28::Gender=Male
Name=Lisa::Age=30::Gender=Female
Name=Mike::Age=25::Gender=Male
Read from system input:
Maxsu Lee
Input first word: Maxsu
可以使用Scanner类将输入解析为特定的数据类型标记。
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。