Класс java.util.Scanner
был введен в Java 1.5 в качестве простого текстового сканера, с помощью которого можно разбирать примитивные типы и строки с использованием регулярных выражений.
Также класс java.util.Scanner
может быть использован для работы с файлами, а именно для чтения данных из файла в примитивные типы, а также использует split()
, чтобы получить String, int, long, Integer
и другие классы-оболочки.
В примере ниже мы будем построчно считывать CSV-файл на Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
package ua.com.prologistic; 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 { /** * Меня зовут Андрей * Мой сайт javadevblog.com * Номер тел. : 10987654321 */ String fileName = "/Users/prologistic/source.txt"; Path path = Paths.get(fileName); Scanner scanner = new Scanner(path); //построчно считываем файл scanner.useDelimiter(System.getProperty("line.separator")); while(scanner.hasNext()){ System.out.println("Строка: " + scanner.next()); } scanner.close(); //считываем CSV файл и парсим его в массив объектов /** * Андрей,20,мужчина * Оля,25,женщина * Витя,30,мужчина */ scanner = new Scanner(Paths.get("/Users/prologistic/data.csv")); scanner.useDelimiter(System.getProperty("line.separator")); while(scanner.hasNext()){ //парсим строку в объект Employee Employee emp = parseCSVLine(scanner.next()); System.out.println(emp.toString()); } scanner.close(); //читаем с System.in; scanner = new Scanner(System.in); System.out.println("Вводим первое слово: " + 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; } } } |
В результате получаем такой вывод:
1 2 3 4 5 6 7 8 |
Строка: Меня зовут Андрей Строка: Мой сайт javadevblog.com Строка: Номер тел. : 10987654321 Name=Андрей::Age=20::Gender=мужчина Name=Оля::Age=25::Gender=женщина Name=Витя::Age=30::Gender=мужчина Мой сайт Первое слово: Мой |
Следите за обновлениями раздела Java IO.
String не является классом оболочкой