Schreiben von Strings in eine CSV-Datei in Java

Rupam Yadav 12 Oktober 2023
  1. Mit PrintWriter eine CSV-Datei in Java lesen und schreiben
  2. Verwenden der Bibliothek OpenCSV zum Lesen und Schreiben in eine CSV-Datei in Java
Schreiben von Strings in eine CSV-Datei in Java

CSV steht für Comma Separated Values; Es ist ein häufig verwendetes Format für umfangreiche Datenübertragungen zwischen Systemen. Es gibt auch viele Parser-Bibliotheken, die zusammen mit Java verwendet werden können, um mit diesem Format arbeiten zu können.

Mit PrintWriter eine CSV-Datei in Java lesen und schreiben

Die Funktion PrinterWriter in Java ist eine Writer-Klasse, die verwendet wird, um formatierte Darstellungen von Objekten in einen Textausgabestrom zu drucken. Wir erstellen ein writer-Objekt und übergeben eine neue Datei namens test.csv als Ziel für den Writer. Dabei hängt das Objekt sb einen angegebenen String an die Zeichenkette an.

Die Methode write() der Instanz writer schreibt den textuellen Inhalt in den Stream. Die Methode flush() leert den Inhalt in die Datei und die Methode close() schließt den Stream dauerhaft. Wir können auch den Inhalt der Datei test.csv lesen.

Die Methode readCSVFile() wird auf der Klasseninstanz TestCSV aufgerufen. Hier haben wir eine Instanz der Klasse Scanner mit Werten aus der angegebenen Datei erstellt. Es zerlegt Daten mithilfe eines Trennzeichenmusters in Token. hasNextLine() gibt true zurück, wenn der Scanner eine andere Eingabezeile hat. Daher lesen wir jede Zeile von Token-Daten mit der Methode next() und speichern sie in einem Array, um schließlich die Ausgabe zu drucken.

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class TestCSV {
  public static void main(String args[]) {
    try (PrintWriter writer = new PrintWriter(new File("test.csv"))) {
      StringBuilder sb = new StringBuilder();
      sb.append("id");
      sb.append(',');
      sb.append("Name");
      sb.append(',');
      sb.append("Address");
      sb.append('\n');

      sb.append("101");
      sb.append(',');
      sb.append("John Doe");
      sb.append(',');
      sb.append("Las Vegas");
      sb.append('\n');

      writer.write(sb.toString());
      writer.close();
      System.out.println("done!");

    } catch (FileNotFoundException e) {
      System.out.println(e.getMessage());
    }
    TestCSV testCSV = new TestCSV();
    testCSV.readCSVFile();
  }

  public void readCSVFile() {
    List<List<String>> records = new ArrayList<>();
    try (Scanner scanner = new Scanner(new File("test.csv"));) {
      while (scanner.hasNextLine()) {
        records.add(getRecordFromLine(scanner.nextLine()));
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
    System.out.println(records.toString());
  }
  private List<String> getRecordFromLine(String line) {
    List<String> values = new ArrayList<String>();
    try (Scanner rowScanner = new Scanner(line)) {
      rowScanner.useDelimiter(",");
      while (rowScanner.hasNext()) {
        values.add(rowScanner.next());
      }
    }
    return values;
  }
}

Ausgabe

done!
[[id, Name, Address], [101, John Doe, Las Vegas]]

Verwenden der Bibliothek OpenCSV zum Lesen und Schreiben in eine CSV-Datei in Java

Die Maven-Abhängigkeit für diese Bibliothek ist unten angegeben:

 <dependency>
      <groupId>com.opencsv</groupId>
      <artifactId>opencsv</artifactId>
      <version>5.4</version>
 </dependency>

Die OpenCsv ist eine einfache Parser-Bibliothek für Java; Es hat eine Reihe von OpenCsv-Klassen, die wir zum Lesen und Schreiben in eine CSV-Datei verwenden. In der Methode main() rufen wir zunächst die Methode zum Schreiben in eine CSV-Datei mit der Klasse CSVWriter auf. Diese Klasse wird verwendet, um CSV-Daten in die Writer-Implementierung zu schreiben.

Wir erstellen eine writer-Instanz von CSVWriter und rufen die Funktion writeNext() für dieses Objekt auf, um eine CSV-Datei mit Daten aus einem Array von Strings zu generieren, die durch ein Trennzeichen getrennt sind. Die Methode close() schließt den Writer-Stream.

Um die Daten aus der von uns erstellten Datei im CSV-Format auszulesen, rufen wir die Methode readCSVFile auf dem Hauptklassenobjekt auf, wo wir die CSV-Datei parsen. Um alle Datensätze auf einmal in eine Liste einzulesen, verwenden wir die Methode readAll(). Wir durchlaufen jeden Datensatz und drucken ihn aus.

import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;
import com.opencsv.exceptions.CsvException;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class CSVLibrary {
  public static void main(String args[]) {
    CSVLibrary csvLibrary = new CSVLibrary();
    csvLibrary.writeToCsv();
    csvLibrary.readCSVFile();
  }
  public void writeToCsv() {
    String csv = "data.csv";
    try {
      CSVWriter writer = new CSVWriter(new FileWriter(csv));
      String[] record = "2,Virat,Kohli,India,30".split(",");
      writer.writeNext(record);

      writer.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public void readCSVFile() {
    CSVReader reader = null;
    try {
      reader = new CSVReader(new FileReader("data.csv"));
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }

    List<String[]> allRows = null;
    try {
      allRows = reader.readAll();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (CsvException e) {
      e.printStackTrace();
    }

    for (String[] row : allRows) {
      System.out.println(Arrays.toString(row));
    }
  }
}

Ausgabe

[2, Virat, Kohli, India, 30]
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Verwandter Artikel - Java CSV

Verwandter Artikel - Java String