Автор оригинала: 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