Java examples for File Path IO:CSV File
CSV content formatter.
//package com.java2s; import java.io.*; import java.util.Iterator; import java.util.List; public class Main { private static final char DEFAULT_CSV_SEPARATOR = ';'; private static final String DEFAULT_LINE_SEPARATOR = "\r\n"; /**/*w ww. jav a2 s .c o m*/ * CSV content formatter. Convert a two-dimensional List of Objects to a CSV in an InputStream. * The value of each Object will be obtained by its toString() method. The fields of each CSV * record will be separated by the default CSV field separator, a comma. * * @param csvList A two-dimensional List of Objects representing the rows and columns of the * CSV. * @return The InputStream containing the CSV contents (actually a ByteArrayInputStream). */ public static <T extends Object> InputStream formatCsv( List<List<T>> csvList) { return formatCsv(csvList, DEFAULT_CSV_SEPARATOR); } /** * CSV content formatter. Convert a two-dimensional List of Objects to a CSV in an InputStream. * The value of each Object will be obtained by its toString() method. The fields of each CSV * record will be separated by the specified CSV field separator. * * @param csvList A two-dimensional List of Objects representing the rows and columns of the * CSV. * @param csvSeparator The CSV field separator to be used. * @return The InputStream containing the CSV contents (actually a ByteArrayInputStream). */ public static <T extends Object> InputStream formatCsv( List<List<T>> csvList, char csvSeparator) { // Prepare. StringBuilder csvContent = new StringBuilder(); // Process records. for (List<T> csvRecord : csvList) { if (csvRecord != null) { csvContent.append(formatCsvRecord(csvRecord, csvSeparator)); } // Add default line separator. csvContent.append(DEFAULT_LINE_SEPARATOR); } return new ByteArrayInputStream(csvContent.toString().getBytes()); } /** * CSV record formatter. Convert a List of Objects representing the fields of a CSV record to a * String representing the CSV record. The value of each Object will be obtained by its * toString() method. The fields of the CSV record will be separated by the specified CSV field * separator. * * @param csvRecord A List of Objects representing the fields of a CSV reecord. * @param csvSeparator The CSV field separator to be used. * @return A String representing a CSV record. */ private static <T extends Object> String formatCsvRecord( List<T> csvRecord, char csvSeparator) { // Prepare. StringBuilder fields = new StringBuilder(); String separator = String.valueOf(csvSeparator); // Process fields. for (Iterator<T> iter = csvRecord.iterator(); iter.hasNext();) { T object = iter.next(); if (object != null) { String field = object.toString().replace("\"", "\"\""); // Escape quotes. if (field.contains(separator) || field.contains("\"")) { field = "\"" + field + "\""; // Surround with quotes. } fields.append(field); } if (iter.hasNext()) { fields.append(separator); // Add field separator. } } return fields.toString(); } }