私は過去2時間、私の問題の解決策を無駄に探していました。 Apache commons を使用してCSVファイルを読み取ろうとしていますが、ファイル全体を読み取ることができますが、問題は、配列内のCSVのヘッダーのみを抽出する方法です。
デフォルトでは、CSVParser
によって読み取られる最初のレコードは、常にヘッダーレコードになります。以下の例では:
_CSVFormat csvFileFormat = CSVFormat.DEFAULT.withHeader(FILE_HEADER_MAPPING);
FileReader fileReader = new FileReader("file");
CSVParser csvFileParser = new CSVParser(fileReader, csvFileFormat);
List csvRecords = csvFileParser.getRecords();
_
csvRecords.get(0)
はヘッダーレコードを返します。
私はどこを見ても、上記の解決策でさえうまくいきませんでした..この問題を抱えている他の人にとっては、これはうまくいきます。
Iterable<CSVRecord> records;
Reader in = new FileReader(fileLocation);
records = CSVFormat.Excel.withHeader().withSkipHeaderRecord(false).parse(in);
Set<String> headers = records.iterator().next().toMap().keySet();
BufferedReader br = new BufferedReader(new FileReader(filename));
CSVParser parser = CSVParser.parse(br, CSVFormat.Excel.withFirstRecordAsHeader());
List<String> headers = parser.getHeaderNames();
これは私のために働いた。最後の行は必要なもので、パーサーによって検出されたヘッダーを文字列のリストに抽出します。