Java сым to сым

Using Java to write Data into CSV files

Creating and writing CSV files is easier than you think with Java. CSV stands for Comma Separated Values. As the name suggests, We just need to write values separated by a comma on each line to create such a file.

Identify the data you want to write as CSV

For example, You have an Array of Array that contains information about employees like this.

String[][] employees = < "Man", "Sparkes", "[email protected]", "Engineering">, "Dulcinea", "Terzi", "[email protected]", "Engineering">, "Tamar", "Bedder", "[email protected]", "Legal">, "Vance", "Scouller", "[email protected]", "Sales">, "Gran", "Jagoe", "[email protected]", "Business Development"> >; Code language: Java (java)

In java, you can loop through these data and write the CSV file manually.

Create the CSV file using java.io.File class

In this step, you need to set up where the CSV file will go. For this, You need to define a File object and set up a write mechanism. For this example, we are going to use a file writer.

File csvFile = new File("employees.csv"); FileWriter fileWriter = new FileWriter(csvFile);Code language: Java (java)

The constructor for FileWriter will throw a java.io.IOException. You can either handle it using try-catch or add the exception to the method signature.

Читайте также:  Arithmetic operators python решение

Java code to Write Data to CSV File

The next step is to add each record as comma-separated values in each line. For this, we can use a simple loop over java arrays. For example, we are using StringBuilder to create each line. And also, We are making sure to add commas and line breaks when necessary.

for (String[] data : employees) < StringBuilder line = new StringBuilder(); for (int i = 0; i < data.length; i++) < line.append(data[i]); if (i != data.length - 1) < line.append(','); > > line.append("\n"); fileWriter.write(line.toString()); > fileWriter.close();Code language: Java (java)

You have almost completed your work to write data into CSV files using pure java. You can run this java program and see that it creates employees.csv file.

Problems with this approach

Even though this approach works for the data we created, there are certain rules you must follow to handle special characters in a CSV file.

  1. You should wrap a value with double quotes if it contains a comma(,). So it is usually better to wrap all values in the double quote(“).
  2. A string with a line break also needs to be wrapped in double-quotes. But some CSV readers may not recognize line breaks and will cause problems.
  3. In the case of wrapping with double quotes, you will need to escape double quotes within the string you are trying to quote. The escaping is done by adding another double quote.
    1. For example, Some Guy with a “Masters” Degree becomes “Some Guy with a “”Masters”” Degree“.

    So let’s fix these problems in our program.

    Final Java Program that writes CSV

    Here is the final version of our CSV writer with all necessary fixes.

    public class CSVWriter < public static void main(String[] args) throws IOException < String[][] employees = < "Man", "Sparkes", "[email protected]", "Engineering">, "Dulcinea", "Terzi", "[email protected]", "Engineering">, "Tamar", "Bedder", "[email protected]", "Legal">, "Vance", "Scouller", "[email protected]", "Sales">, "Gran", "Jagoe", "[email protected]", "Business Development"> >; File csvFile = new File("employees.csv"); FileWriter fileWriter = new FileWriter(csvFile); //write header line here if you need. for (String[] data : employees) < StringBuilder line = new StringBuilder(); for (int i = 0; i < data.length; i++) < line.append("\""); line.append(data[i].replaceAll("\"","\"\"")); line.append("\""); if (i != data.length - 1) < line.append(','); > > line.append("\n"); fileWriter.write(line.toString()); > fileWriter.close(); > > Code language: Java (java)

    Once we run this program, we can see that our employees.csv can be opened in applications like excel or google sheets.

    CSV file created from Java program

    Note that this program is just an example to demonstrate how we can create a simple CSV file using plain Java. Even though this approach is small and simple, I would advise you to use java libraries like apache commons-CSV library to write CSV files. You can find all these examples in our GitHub repository.

    Источник

    Чтение и запись Csv на Java

    Это первая статья в короткой серии, посвященной библиотекам для чтения и записи Csv на Java .

    Чтение и запись Csv в ядре Java

    Благодаря популярности и широкому использованию CSV в качестве формата для передачи данных, существует множество библиотек синтаксических анализаторов, которые можно использовать наряду с Java.

    Сторонние анализаторы определяют общие форматы и способны работать с различными разделителями, обрабатывать специальные символы, а иногда даже считывать недвоичные данные. Однако не всем программам требуются все эти функции, поэтому по-прежнему важно иметь возможность обрабатывать CSV-файлы с помощью ядра Java без использования каких-либо дополнительных библиотек.

    Простая комбинация FileReader , BufferedReader и String.split() может облегчить чтение данных из Csv. Давайте рассмотрим шаги , чтобы открыть базовый файл CSV и проанализировать содержащиеся в нем данные:

    • Используйте FileReader для открытия CSV-файла
    • Создайте BufferedReader и считывайте файл строка за строкой до тех пор, пока не будет достигнут символ “Конец файла” ( EOF )
    • Используйте метод String.split() для определения разделителя запятых и разделения строки на поля
    BufferedReader csvReader = new BufferedReader(new FileReader(pathToCsv)); while ((row = csvReader.readLine()) != null) < String[] data = row.split(","); // do something with the data >csvReader.close();

    Массив данных Строк будет содержать список полей в каждой строке файла, найденного в пути к файлу Csv . Если файл CSV имеет разделитель, отличный от запятой, его можно указать в методе split . Например, другим распространенным разделителем является вкладка для файлов с разделенными вкладками значениями (CSV).

    Данные могут быть переданы в отдельный метод для обработки или записи в базу данных из цикла или сохранены в коллекции Java для последующего использования. Например, если вы записываете большой объем данных в базу данных, нарушений ограничений (например, нарушений первичного ключа), вызванных человеческими ошибками при создании CSV, можно избежать с помощью хэш-карты. Если в CSV есть повторяющаяся запись, хэш-карта сохранит самую последнюю “прочитанную” и перезапишет предыдущую запись.

    Поскольку вы пишете синтаксический анализатор с нуля, вам нужно будет самостоятельно позаботиться о простой обработке ошибок. Например, если вы не уверены, существует ли файл, всегда безопаснее заключить операцию чтения в блок try/catch или добавить логику для определения существования файла перед обработкой.

    Чтобы проверить, существует ли файл, в наш код можно внести следующие изменения:

    File csvFile = new File(pathToCsv); if (csvFile.isFile()) < // create BufferedReader and read data from csv >

    При некоторой простой обработке ошибок и строгих требованиях к формату CSV создание простого синтаксического анализатора самостоятельно с использованием основных компонентов Java-задача, которую может выполнить большинство программистов.

    Написание резюме на языке Java

    Большинство сторонних анализаторов также поддерживают запись в CSV-файлы. Однако существует простой способ записи в CSV-файлы, как и в файлы любого другого типа, без использования каких-либо библиотек.

    Самый простой способ-использовать объект FileWriter и обрабатывать файл CSV как любой другой текстовый файл. В нашем примере данные хранятся в некоторых объектах List , которые мы просто перебираем и добавляем в программу записи:

    // Our example data List> rows = Arrays.asList( Arrays.asList(«Jean», «author», «Java»), Arrays.asList(«David», «editor», «Python»), Arrays.asList(«Scott», «editor», «Node.js») ); FileWriter csvWriter = new FileWriter(«new.csv»); csvWriter.append(«Name»); csvWriter.append(«,»); csvWriter.append(«Role»); csvWriter.append(«,»); csvWriter.append(«Topic»); csvWriter.append(«\n»); for (List rowData : rows) < csvWriter.append(String.join(",", rowData)); csvWriter.append("\n"); >csvWriter.flush(); csvWriter.close(); При использовании пишущей машинки всегда убедитесь, что вы очистили и закрыли поток. Это повышает производительность операции ввода-вывода и указывает на то, что в выходной поток больше не требуется записывать данные.

    Вывод

    Существует несколько способов чтения и записи CSV-файлов на Java, самым простым из которых является использование основных компонентов Java. Хотя это также делает вас более уязвимыми для ошибок и будет менее надежным, чем проверенное стороннее решение.

    Если вам интересно прочитать о других способах чтения и записи Csv на Java, обязательно ознакомьтесь с другими нашими статьями:

    • Чтение и запись Csv на Java с помощью Apache Commons CSV
    • Чтение и запись Csv на Java с помощью Opencv

    Читайте ещё по теме:

    Источник

Оцените статью