Giriş
Şu satırı dahil ederiz.
Kullanım
Örnek
Şöyle yaparız.
Örnek
Şöyle yaparız.
Elimizde şöyle bir TXT dosyası olsun. Hatta bu dosyada eksik sütunlar olsun.
Ş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 metoduElimizde şö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üAçıklaması şöyle
CSVParser implements Iterable<CSVRecord>, so we can use a for-each loop
Örnek
Elimizde şöyle bir veri olsun
id,first,last,city
1,john,doe,austin
2,jane,mary,seattle
Şöyle yaparız
String path = "./data/data.csv";
Map<Integer, User> map = new HashMap<>();
try (CSVParser csvParser = new CSVParser(Files.newBufferedReader(Paths.get(path)),
CSVFormat.RFC4180.withFirstRecordAsHeader())) {
for (CSVRecord csvRecord : csvParser) {
User currentUser = new User(
Integer.parseInt(csvRecord.get("id")),
csvRecord.get("first"),
csvRecord.get("last"),
csvRecord.get("city")
);
map.put(currentUser.getId(), currentUser);
}
}
Hiç yorum yok:
Yorum Gönder