1. Обзор
В этом кратком учебнике, мы собираемся, чтобы узнать как написать в файл CSV с помощью Java . CSV означает Comma-Separated-Values, и это общий формат для выполнения массовой передачи данных между системами.
Чтобы написать наш файл CSV, мы будем использовать классы в java.io пакет.
Поговорим об особых персонажах и как с ними обращаться. Мы будем нацеливаться на наш выпускной файл открыть в Microsoft Excel и Google листы.
После нашего примера Java, мы кратко посмотрим на некоторые доступные сторонние библиотеки для работы с файлами CSV.
2. Письмо с PrintWriter
Мы собираемся использовать РаспечататьПисач для написания нашего файла CSV. Для более подробного взгляда на использование java.io написать в файл, увидеть наши статья о написании файлов .
2.1. Написание CSV
Во-первых, давайте создадим метод форматирования одной строки данных, представленной как массив Струнные секунда:
public String convertToCSV(String[] data) { return Stream.of(data) .map(this::escapeSpecialCharacters) .collect(Collectors.joining(",")); }
Прежде чем мы назовем этот метод, однако, давайте следующий создать некоторые примеры данных:
ListdataLines = new ArrayList<>(); dataLines.add(new String[] { "John", "Doe", "38", "Comment Data\nAnother line of comment data" }); dataLines.add(new String[] { "Jane", "Doe, Jr.", "19", "She said \"I'm being quoted\"" });
И с этими данными в руке, давайте конвертировать каждую строку с конвертироватьToCSV и напишите его в файл:
public void givenDataArray_whenConvertToCSV_thenOutputCreated() throws IOException { File csvOutputFile = new File(CSV_FILE_NAME); try (PrintWriter pw = new PrintWriter(csvOutputFile)) { dataLines.stream() .map(this::convertToCSV) .forEach(pw::println); } assertTrue(csvOutputFile.exists()); }
2.2. Обработка специальных символов
В файле CSV некоторые символы являются проблематичными, и как разработчики, мы редко можем получить полный контроль над качеством наших данных. Итак, давайте посмотрим сейчас на то, как обращаться с особыми символами.
Например, мы сосредоточимся на запятых, кавычках и новых линиях. Поля, содержащие запятые или котировки, будут окружены двойными котировками, а двойные котировки будут удалены с двойными котировками. Мы устраним новые линии и заменим их каждый белым пространством.
Какие символы являются проблемой и как они должны быть обработаны может варьироваться в зависимости от случая использования.
Наша конвертироватьToCSV метод вызывает побегСпециальныеЧакторы метод на каждой части данных, как это создание струна.
Давайте реализуем нашу побегСпециальныеЧакторы метод сейчас:
public String escapeSpecialCharacters(String data) { String escapedData = data.replaceAll("\\R", " "); if (data.contains(",") || data.contains("\"") || data.contains("'")) { data = data.replace("\"", "\"\""); escapedData = "\"" + data + "\""; } return escapedData; }
3. Библиотеки третьих сторон
Как мы видели на нашем примере, написание файла CSV может стать сложным, когда мы начинаем думать о специальных символов и как обращаться с ними.
К счастью для нас, есть много сторонних библиотек, доступных для работы с файлами CSV и многие из них обрабатывать эти специальные символы и другие исключительные случаи, которые могут произойти.
Давайте посмотрим на некоторые из них:
- Apache Commons CSV : CSV предложение Apache для работы с CSV файлов
- Открытый CSV : Еще одна популярная и активно поддерживаемая библиотека CSV
- Флэтпак : Активно развивается библиотека CSV с открытым исходным кодом
- CSVeed : С открытым исходным кодом и активно поддерживается
4. Заключение
В этой быстрой статье мы показали, как написать файл CSV с помощью файлов Java РаспечататьПисач класс. Далее мы обсудили и обработаем специальные символы в выходных данных.
После нашего простого примера Java мы рассмотрели обзор доступных сторонних библиотек.
Пример кода доступен более чем на GitHub.