Format examples for fluent style

This commit is contained in:
Gary Gregory 2023-05-01 08:57:23 -04:00
parent 0bcdcfd466
commit 4ca0556f6b
1 changed files with 30 additions and 15 deletions

View File

@ -71,24 +71,23 @@ for (CSVRecord record : records) {
for example:
</p>
<source>final URL url = ...;
final Reader reader = new InputStreamReader(new BOMInputStream(url.openStream()), "UTF-8");
final CSVParser parser = CSVFormat.EXCEL.builder().setHeader().build().parse(reader);
try {
try (final Reader reader = new InputStreamReader(new BOMInputStream(url.openStream()), "UTF-8");
final CSVParser parser = CSVFormat.EXCEL.builder()
.setHeader()
.build()
.parse(reader)) {
for (final CSVRecord record : parser) {
final String string = record.get("SomeColumn");
...
}
} finally {
parser.close();
reader.close();
}
</source>
<p>
You might find it handy to create something like this:
</p>
<source>/**
* Creates a reader capable of handling BOMs.
*/
* Creates a reader capable of handling BOMs.
*/
public InputStreamReader newReader(final InputStream inputStream) {
return new InputStreamReader(new BOMInputStream(inputStream), StandardCharsets.UTF_8);
}
@ -118,7 +117,10 @@ for (CSVRecord record : records) {
Indices may not be the most intuitive way to access record values. For this reason it is possible to
assign names to each column in the file:
<source>Reader in = new FileReader(&quot;path/to/file.csv&quot;);
Iterable&lt;CSVRecord&gt; records = CSVFormat.RFC4180.builder().setHeader("ID", "CustomerNo", "Name").build().parse(in);
Iterable&lt;CSVRecord&gt; records = CSVFormat.RFC4180.builder()
.setHeader("ID", "CustomerNo", "Name")
.build()
.parse(in);
for (CSVRecord record : records) {
String id = record.get("ID");
String customerNo = record.get("CustomerNo");
@ -136,7 +138,10 @@ for (CSVRecord record : records) {
ID, CustomerNo, Name
}
Reader in = new FileReader(&quot;path/to/file.csv&quot;);
Iterable&lt;CSVRecord&gt; records = CSVFormat.RFC4180.builder().setHeader(Headers.class).build().parse(in);
Iterable&lt;CSVRecord&gt; records = CSVFormat.RFC4180.builder()
.setHeader(Headers.class)
.build()
.parse(in);
for (CSVRecord record : records) {
String id = record.get(Headers.ID);
String customerNo = record.get(Headers.CustomerNo);
@ -149,7 +154,11 @@ for (CSVRecord record : records) {
Some CSV files define header names in their first record. If configured, Apache Commons CSV can parse
the header names from the first record:
<source>Reader in = new FileReader(&quot;path/to/file.csv&quot;);
Iterable&lt;CSVRecord&gt; records = CSVFormat.RFC4180.builder().setHeader().setSkipHeaderRecord(true).build().parse(in);
Iterable&lt;CSVRecord&gt; records = CSVFormat.RFC4180.builder()
.setHeader()
.setSkipHeaderRecord(true)
.build()
.parse(in);
for (CSVRecord record : records) {
String id = record.get("ID");
String customerNo = record.get("CustomerNo");
@ -163,16 +172,22 @@ for (CSVRecord record : records) {
To print a CSV file with headers, you specify the headers in the format:
</p>
<source>final Appendable out = ...;
final CSVPrinter printer = CSVFormat.DEFAULT.builder().setHeader("H1", "H2").build().print(out);
final CSVPrinter printer = CSVFormat.DEFAULT.builder()
.setHeader("H1", "H2")
.build()
.print(out);
</source>
<p>
To print a CSV file with JDBC column labels, you specify the ResultSet in the format:
</p>
<source>final ResultSet resultSet = ...;
final CSVPrinter printer = CSVFormat.DEFAULT.builder().setHeader(resultSet).build().print(out);
<source>try (final ResultSet resultSet = ...) {
final CSVPrinter printer = CSVFormat.DEFAULT.builder()
.setHeader(resultSet)
.build()
.print(out);
}
</source>
</subsection>
</section>
<!-- ================================================== -->
</body>
</document>