Как читать и анализировать CSV-файл в Java? Есть ли у нас встроенная утилита Java, которая преобразует строку CSV (значения, разделенные запятыми) в объект ArrayList ? Ответ — нет. Но это не большая проблема. С помощью простой утилиты вы можете без проблем конвертировать CSV в ArrayList.
Что такое файл CSV?
CSV является comma separated values файл, который позволяет сохранять данные в виде таблицы. Если вы используете инструмент Google для веб-мастеров и знаете, как работать с SEO вашего сайта, вы должны были экспортировать ключевые слова в формате CSV из инструмента для веб-мастеров. Google Spreadsheets и Microsoft Excel позволяют легко редактировать созданные файлы CSV . Ваш CSV- файл должен быть отформатирован как таблица и должен содержать заголовок или первую строку, которая определяет поля в вашей таблице.
Давайте начнем
Шаг 1
Создайте образец текстового файла и назовите его как Crunchify-CSV-to-ArrayList.txt , Скопируйте и вставьте содержимое ниже в файл.
|
1
2
3
4
|
Crunchify , Веб- разработка , Нью-Йорк , 5 Сотрудники
Google , поисковая компания , Маунтин- Вью , 53600 Сотрудники
Yahoo , информационная компания , Саннивейл , 12500 Сотрудники
Microsoft , Windows Company , Вашингтон , 128000 Сотрудники
|
Шаг 2
- Как читать файл в Java построчно? Сначала мы прочитаем указанный выше файл на Java, используя простой
java.io.BufferedReader - Создайте
crunchifyCSVtoArrayList(String)утилита, которая конвертирует CSV в Arraylist - использование
java.lang.String.split(String regex)полезность
|
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
|
пакет crunchify. ком . учебник ;
Импортировать Java. Ио. BufferedReader ;
Импортировать Java. Ио. FileReader ;
Импортировать Java. Ио. IOException ;
Импортировать Java. Util. ArrayList ;
/ **
* @author Crunchify.com
*
* /
общественности учебный класс CrunchifyCSVtoArrayList {
общественности статический недействительным main ( Строка [ ] аргументы ) {
BufferedReader crunchifyBuffer знак равно ноль ;
пытаться {
строка crunchifyLine ;
crunchifyBuffer знак равно новый BufferedReader ( новый FileReader ( /Users/appshah/Documents/Crunchify-CSV-to-ArrayList.txt ) ) ;
// Как читать файл в Java построчно?
в то время как ( ( crunchifyLine знак равно crunchifyBuffer . readLine ( ) ) ! знак равно ноль ) {
Система. вне. println ( «Необработанные данные CSV:» + crunchifyLine ) ;
Система. вне. println ( «Преобразованные данные ArrayList:» + crunchifyCSVtoArrayList ( crunchifyLine ) + / n ) ;
}
} ловить ( IOException е ) {
эл . printStackTrace ( ) ;
} в конце концов {
пытаться {
если ( crunchifyBuffer ! знак равно ноль ) crunchifyBuffer . закрыть ( ) ;
} ловить ( IOException crunchifyException ) {
crunchifyException . printStackTrace ( ) ;
}
}
}
// Утилита, которая конвертирует CSV в ArrayList с помощью операции Split
общественности статический ArrayList
ArrayList
если ( crunchifyCSV ! знак равно ноль ) {
Строка [ ] splitData знак равно crunchifyCSV . split ( // s *, // s * ) ;
за ( int я знак равно 0 ; я < splitData . длина ; я ++ ) {
если ( ! ( splitData [ i ] == ноль ) | | ! ( splitData [ i ] . length ( ) == 0 ) ) {
crunchifyResult . добавить ( splitData [ i ] . trim ( ) ) ;
}
}
}
вернуть crunchifyResult ;
}
}
|
Мы используем регулярные выражения \s*,\s* ,
s соответствует любому пробелу, * применяет совпадение ноль или более раз. Так s* означает «совпадать с любым пробелом ноль или более раз». Мы ищем это до и после запятой. Следовательно, разделение будет работать для таких строк, как "company1 ,company2 , company3" , или же "company1,company2,company3" и т. д. В Java вам нужно экранировать обратную косую черту в строках, так что вы получите \s*.
Результат:
|
1
2
3
4
5
6
7
8
9
10
11
|
Необработанные данные CSV : Crunchify , Веб- разработка , Нью-Йорк , 5 Сотрудники
Преобразованные данные ArrayList : [ Хруст , Веб- разработка , Нью-Йорк , 5 Сотрудники ]
Необработанные данные CSV : Google , поисковая компания , Маунтин- Вью , 53600 Сотрудники
Преобразованные данные ArrayList : [ Google , Поиск компании , Маунтин- Вью , 53600 Сотрудники ]
Необработанные данные CSV : Yahoo , информационная компания , Саннивейл , 12500 Сотрудники
Преобразованные данные ArrayList : [ Yahoo , Новости компании , Саннивейл , 12500 Сотрудники ]
Необработанные данные CSV : Microsoft , Windows Company , Вашингтон , 128000 Сотрудники
Преобразованные данные ArrayList : [ Microsoft , Компания Windows , Вашингтон , 128000 Сотрудники ]
|
0.00 (0%) 0 votes






