Giriş
Şu satırı dahil
ederiz.
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
CVS veya TXT dosyası okumak için kullanılır.
Kullanım
Örnek
Şöyle
yaparız.
Reader reader = ...;
CSVParser csvParser = null;
try {
csvParser = new CSVParser(reader, CSVFormat.DEFAULT
.withEscape('/')
.withFirstRecordAsHeader()
.withDelimiter('|')
.withIgnoreHeaderCase()
.withTrim());
...
} finally {
inputStream.close();
reader.close();
if (csvParser != null) {
csvParser.close();
}
}
constructor - Reader + CSVFormat
Örnek
Şöyle
yaparız.
BufferedReader reader = Files.newBufferedReader(Paths.get("przedmioty.csv"));
CSVParser csvParser = new CSVParser(reader,
CSVFormat.DEFAULT.withHeader("Name", "Teacher", "Years")
.withIgnoreHeaderCase()
.withTrim());
for (CSVRecord csvRecord: csvParser) {
// Accessing Values by Column Index
String name = csvRecord.get(0);
//Accessing the values by column header name
String Teacher= csvRecord.get(1);
String years = csvRecord.get(2);
//Printing the record
System.out.println("Record Number - " + csvRecord.getRecordNumber());
System.out.println("Name: " + name);
System.out.println("Teacher: " + Teacher);
System.out.print("Years : " + years );
System.out.println("\n\n");
}
getHeaders metodu
Elimizde şöyle bir TXT dosyası
olsun. Hatta bu dosyada eksik sütunlar olsun.
A,B,C,D
1,2,3,4
1,2,3
1,2
1
1,
1,,
1,,,
,,,4,,,
Şöyle
yaparız.
CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader();
try (CSVParser csvParser = csvFormat.parse(Files.newBufferedReader(Paths.get("t.txt")))){
System.out.println(csvParser.getHeaderNames());
for (CSVRecord csvRecord : csvParser) {
System.out.println(csvRecord);
System.out.println(" toMap(): " + csvRecord.toMap());
Map<String, String> map = csvRecord.toMap();
for (String name : csvParser.getHeaderNames())
map.putIfAbsent(name, "");
System.out.println(" fixed : " + map);
}
}
Çıktı olarak şunu
alırız
[A, B, C, D]
CSVRecord [comment='null', recordNumber=1, values=[1, 2, 3, 4]]
toMap(): {A=1, B=2, C=3, D=4}
fixed : {A=1, B=2, C=3, D=4}
CSVRecord [comment='null', recordNumber=2, values=[1, 2, 3]]
toMap(): {A=1, B=2, C=3}
fixed : {A=1, B=2, C=3, D=}
CSVRecord [comment='null', recordNumber=3, values=[1, 2]]
toMap(): {A=1, B=2}
fixed : {A=1, B=2, C=, D=}
CSVRecord [comment='null', recordNumber=4, values=[1]]
toMap(): {A=1}
fixed : {A=1, B=, C=, D=}
CSVRecord [comment='null', recordNumber=5, values=[1, ]]
toMap(): {A=1, B=}
fixed : {A=1, B=, C=, D=}
CSVRecord [comment='null', recordNumber=6, values=[1, , ]]
toMap(): {A=1, B=, C=}
fixed : {A=1, B=, C=, D=}
CSVRecord [comment='null', recordNumber=7, values=[1, , , ]]
toMap(): {A=1, B=, C=, D=}
fixed : {A=1, B=, C=, D=}
CSVRecord [comment='null', recordNumber=8, values=[, , , 4, , , ]]
toMap(): {A=, B=, C=, D=4}
fixed : {A=, B=, C=, D=4}
getRecords metodu
Şöyle
yaparız.
CSVParser csvParser = ...
List<CSVRecord> recordList = csvParser.getRecords();
for Döngüsü