Автор оригинала: Pankaj Kumar.
Класс сканера в Java ( java.util.Сканер ) был представлен в Java 1.5 как простой текстовый сканер, который может анализировать примитивные типы и строки с помощью регулярных выражений.
Класс сканера на Java
Класс сканера Java можно использовать для разбиения входных данных на токены с любым разделителем регулярных выражений, а также для разбора файлов.
Класс сканера можно использовать для считывания данных файла в примитив. Он также расширяет метод String split() для возврата токенов в виде String, int, long, Integer и других классов-оболочек.
Пример сканера Java
Здесь я использую сканер для чтения файла строка за строкой, разбираю CSV-файл, чтобы легко создавать объекты java и считывать данные с пользовательского ввода.
Здесь я использую сканер для чтения файла строка за строкой, разбираю CSV-файл, чтобы легко создавать объекты java и считывать данные с пользовательского ввода.
package com.journaldev.files;
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 {
/**
* My Name is Pankaj
* My website is journaldev.com
* Phone : 1234567890
*/
String fileName = "/Users/pankaj/source.txt";
Path path = Paths.get(fileName);
Scanner scanner = new Scanner(path);
//read file line by line
scanner.useDelimiter(System.getProperty("line.separator"));
while(scanner.hasNext()){
System.out.println("Lines: "+scanner.next());
}
scanner.close();
//read CSV Files and parse it to object array
/**
* Pankaj,28,Male
* Lisa,30,Female
* Mike,25,Male
*/
scanner = new Scanner(Paths.get("/Users/pankaj/data.csv"));
scanner.useDelimiter(System.getProperty("line.separator"));
while(scanner.hasNext()){
//parse line to get Emp Object
Employee emp = parseCSVLine(scanner.next());
System.out.println(emp.toString());
}
scanner.close();
//read from system input
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 Pankaj Lines: My website is journaldev.com Lines: Phone : 1234567890 Name=Pankaj::Age=28::Gender=Male Name=Lisa::Age=30::Gender=Female Name=Mike::Age=25::Gender=Male Read from system input: Pankaj Kumar Input first word: Pankaj
Мы можем использовать класс сканера java для анализа входных данных в маркеры определенного типа данных.
Прочитайте этот пост, чтобы узнать, как читать CSV-файл с помощью сканера .
Ссылка: API Doc