{"id":1,"date":"2023-10-28T20:44:02","date_gmt":"2023-10-28T19:44:02","guid":{"rendered":"http:\/\/www.xn--javaeinfacherklrt-4qb.de\/wordpress\/?p=1"},"modified":"2024-01-08T09:15:00","modified_gmt":"2024-01-08T08:15:00","slug":"hello-world","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=1","title":{"rendered":"Parsen von CSV-Dateien in Java"},"content":{"rendered":"\n<p>Das Parsen von CSV-Dateien ist in der Java-Programmierung eine h\u00e4ufige Aufgabe, insbesondere wenn es darum geht, Daten aus externen Quellen zu importieren oder exportieren. In diesem Artikel werden verschiedene M\u00f6glichkeiten aufgezeigt, wie man in Java eine CSV-Datei parsen kann.<\/p>\n\n\n\n<p>CSV (Comma-Separated Values) ist ein einfaches Dateiformat zur Speicherung tabellarischer Daten. Dabei sind die Werte in einer Tabelle durch Kommas oder andere Trennzeichen voneinander getrennt. Beispielsweise kann eine CSV-Datei wie folgt aussehen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">Name,Alter,Stadt\nJohn,<span class=\"hljs-number\">30<\/span>,<span class=\"hljs-keyword\">New<\/span> York\nAlice,<span class=\"hljs-number\">25<\/span>,San Francisco\nBob,<span class=\"hljs-number\">35<\/span>,Los Angeles<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Es gibt mehrere Bibliotheken und Ans\u00e4tze, um CSV-Dateien in Java zu parsen. Im Folgenden werden einige davon vorgestellt:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Manuelles Parsen:<\/strong><br>Dies ist die grundlegendste Methode, bei der Sie die Datei Zeile f\u00fcr Zeile einlesen und die Trennzeichen (in den meisten F\u00e4llen Kommas) verwenden, um die Daten zu extrahieren. Dies erfordert zwar mehr Code, ist aber in einfachen F\u00e4llen durchaus praktikabel.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   <span class=\"hljs-keyword\">try<\/span> (BufferedReader br = <span class=\"hljs-keyword\">new<\/span> BufferedReader(<span class=\"hljs-keyword\">new<\/span> FileReader(<span class=\"hljs-string\">\"data.csv\"<\/span>))) {\n       <span class=\"hljs-built_in\">String<\/span> line;\n       <span class=\"hljs-keyword\">while<\/span> ((line = br.readLine()) != <span class=\"hljs-literal\">null<\/span>) {\n           <span class=\"hljs-built_in\">String<\/span>&#91;] values = line.split(<span class=\"hljs-string\">\",\"<\/span>);\n           <span class=\"hljs-built_in\">String<\/span> name = values&#91;<span class=\"hljs-number\">0<\/span>];\n           int age = Integer.parseInt(values&#91;<span class=\"hljs-number\">1<\/span>]);\n           <span class=\"hljs-built_in\">String<\/span> city = values&#91;<span class=\"hljs-number\">2<\/span>];\n           <span class=\"hljs-comment\">\/\/ Verarbeiten der Daten hier<\/span>\n       }\n   } <span class=\"hljs-keyword\">catch<\/span> (IOException e) {\n       e.printStackTrace();\n   }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li><strong>OpenCSV:<\/strong><br>OpenCSV ist eine beliebte Java-Bibliothek, die das Parsen von CSV-Dateien erleichtert. Sie bietet eine saubere API und unterst\u00fctzt verschiedene CSV-Formate sowie die Verarbeitung von Anf\u00fchrungszeichen um Zellenwerte.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   <span class=\"hljs-keyword\">try<\/span> (CSVReader reader = <span class=\"hljs-keyword\">new<\/span> CSVReader(<span class=\"hljs-keyword\">new<\/span> FileReader(<span class=\"hljs-string\">\"data.csv\"<\/span>))) {\n       <span class=\"hljs-built_in\">String<\/span>&#91;] line;\n       <span class=\"hljs-keyword\">while<\/span> ((line = reader.readNext()) != <span class=\"hljs-literal\">null<\/span>) {\n           <span class=\"hljs-built_in\">String<\/span> name = line&#91;<span class=\"hljs-number\">0<\/span>];\n           int age = Integer.parseInt(line&#91;<span class=\"hljs-number\">1<\/span>]);\n           <span class=\"hljs-built_in\">String<\/span> city = line&#91;<span class=\"hljs-number\">2<\/span>];\n           <span class=\"hljs-comment\">\/\/ Verarbeiten der Daten hier<\/span>\n       }\n   } <span class=\"hljs-keyword\">catch<\/span> (IOException | CsvValidationException e) {\n       e.printStackTrace();\n   }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><strong>Apache Commons CSV:<\/strong><br>Die Apache Commons CSV-Bibliothek ist eine weitere beliebte Option, um CSV-Dateien in Java zu verarbeiten. Sie bietet eine einfache API und unterst\u00fctzt das Lesen und Schreiben von CSV-Dateien.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   <span class=\"hljs-keyword\">try<\/span> (CSVParser parser = CSVParser.parse(<span class=\"hljs-keyword\">new<\/span> File(<span class=\"hljs-string\">\"data.csv\"<\/span>), Charset.defaultCharset(), CSVFormat.DEFAULT)) {\n       <span class=\"hljs-keyword\">for<\/span> (CSVRecord record : parser) {\n           <span class=\"hljs-built_in\">String<\/span> name = record.get(<span class=\"hljs-number\">0<\/span>);\n           int age = Integer.parseInt(record.get(<span class=\"hljs-number\">1<\/span>));\n           <span class=\"hljs-built_in\">String<\/span> city = record.get(<span class=\"hljs-number\">2<\/span>);\n           <span class=\"hljs-comment\">\/\/ Verarbeiten der Daten hier<\/span>\n       }\n   } <span class=\"hljs-keyword\">catch<\/span> (IOException e) {\n       e.printStackTrace();\n   }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li><strong>Java 8 Stream API:<\/strong><br>Mit Java 8 und h\u00f6her k\u00f6nnen Sie auch die Stream API verwenden, um CSV-Dateien zu parsen. Dies ist besonders n\u00fctzlich, wenn Sie Daten filtern oder transformieren m\u00fcssen.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   <span class=\"hljs-keyword\">try<\/span> (Stream&lt;<span class=\"hljs-built_in\">String<\/span>&gt; lines = Files.lines(Paths.get(<span class=\"hljs-string\">\"data.csv\"<\/span>))) {\n       lines.map(line -&gt; line.split(<span class=\"hljs-string\">\",\"<\/span>))\n            .forEach(values -&gt; {\n                <span class=\"hljs-built_in\">String<\/span> name = values&#91;<span class=\"hljs-number\">0<\/span>];\n                int age = Integer.parseInt(values&#91;<span class=\"hljs-number\">1<\/span>]);\n                <span class=\"hljs-built_in\">String<\/span> city = values&#91;<span class=\"hljs-number\">2<\/span>];\n                <span class=\"hljs-comment\">\/\/ Verarbeiten der Daten hier<\/span>\n            });\n   } <span class=\"hljs-keyword\">catch<\/span> (IOException e) {\n       e.printStackTrace();\n   }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li><strong>Jackson CSV-Datenbank:<\/strong><br>Wenn Sie die Jackson-Bibliothek bereits verwenden, k\u00f6nnen Sie auch die Jackson CSV-Datenbank verwenden, um CSV-Dateien zu parsen.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   CsvMapper csvMapper = <span class=\"hljs-keyword\">new<\/span> CsvMapper();\n   File csvFile = <span class=\"hljs-keyword\">new<\/span> File(<span class=\"hljs-string\">\"data.csv\"<\/span>);\n   CsvSchema schema = CsvSchema.emptySchema().withHeader();\n   MappingIterator&lt;YourPOJOClass&gt; mappingIterator = csvMapper.readerFor(YourPOJOClass.class).with(schema).readValues(csvFile);\n   <span class=\"hljs-keyword\">while<\/span> (mappingIterator.hasNext()) {\n       YourPOJOClass pojo = mappingIterator.next();\n       <span class=\"hljs-comment\">\/\/ Verarbeiten der Daten hier<\/span>\n   }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Unabh\u00e4ngig von der Methode, die Sie w\u00e4hlen, sollten Sie sicherstellen, dass Sie m\u00f6gliche Fehler behandeln, z. B. das Fehlen von Spalten oder ung\u00fcltige Daten. Beachten Sie auch, dass CSV-Dateien in unterschiedlichen Formaten vorliegen k\u00f6nnen, und passen Sie Ihren Code entsprechend an.<\/p>\n\n\n\n<p>Die Wahl der Methode h\u00e4ngt von den Anforderungen Ihres Projekts ab. Wenn Sie eine einfache CSV-Datei verarbeiten m\u00fcssen, kann das manuelle Parsen ausreichen. F\u00fcr komplexere Aufgaben sind jedoch spezialisierte Bibliotheken wie OpenCSV und Apache Commons CSV in der Regel die bessere Wahl, da sie Fehlerbehandlung und erweiterte Funktionen erleichtern. Die Stream API und Jackson CSV-Datenbank sind besonders n\u00fctzlich, wenn Sie die Verarbeitung in Ihren bestehenden Java-Code integrieren m\u00f6chten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Parsen von CSV-Dateien ist in der Java-Programmierung eine h\u00e4ufige Aufgabe, insbesondere wenn es darum geht, Daten aus externen Quellen zu importieren oder exportieren. In diesem Artikel werden verschiedene M\u00f6glichkeiten aufgezeigt, wie man in Java eine CSV-Datei parsen kann. CSV (Comma-Separated Values) ist ein einfaches Dateiformat zur Speicherung tabellarischer Daten. Dabei sind die Werte in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/1","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1"}],"version-history":[{"count":3,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/1\/revisions"}],"predecessor-version":[{"id":26,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/1\/revisions\/26"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}