Super CSV Annotationを使う
https://mygreen.github.io/super-csv-annotation/project-info.html
EclipseでMavenプロジェクトを新規作成、Javaのバージョンは1.8
pom.xml
<dependencies>
<dependency>
<groupId>com.github.mygreen</groupId>
<artifactId>super-csv-annotation</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.6</version>
</dependency>
</dependencies>
XXXCsvBean.java
import com.github.mygreen.supercsv.annotation.CsvBean;
import com.github.mygreen.supercsv.annotation.CsvColumn;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@CsvBean
@NoArgsConstructor
@AllArgsConstructor
@Data
public class XXXCsvBean {
@CsvColumn(number = 1)
private String user;
@CsvColumn(number = 2)
private String email;
}
XXX.java
try (CsvAnnotationBeanReader<XXXCsvBean> csvReader = getCsvReader(inputStream /* 標準入力ならSystem.in */)) {
csvReader.getHeader(true); // ヘッダ行スキップ
XXXCsvBean readRecord;
while ((readRecord = csvReader.read()) != null) { // Windowsの標準入力ならCTRL+ZでEOFを入力するまで
String user = readRecord.getUser();
// do something
}
}
--
private CsvAnnotationBeanReader<XXXCsvBean> getCsvReader(InputStream inputStream) {
return new CsvAnnotationBeanReader<>(XXXCsvBean.class,
new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)), // Windowsの標準入力ならキャラセット指定なし
CsvPreference.STANDARD_PREFERENCE); // TSVならTAB_PREFERENCE
}