Lesen einer csv-Datei in ein array
Ich versuche die csv-Datei liest, "read_ex.csv", in ein array. Gesucht hab ich endlos auf der web - /stackoverflow-einen Weg zu finden, Lesen Sie die Datei in ein array. Die besten, die ich in der Lage gewesen zu tun ist, Lesen Sie es in einem streaming-Mode, aber ich kann nicht speichern Sie in einem array aufgrund der Variablen Größe der Datei. Ich glaube, dass ArrayList eine Methode zum Umgang mit variable-size array, aber ich weiß nicht, wie mit ihm zu arbeiten. Im wesentlichen möchte ich in der Lage sein, um Zugriff auf die String-array "Werte" nach der while-Schleife wird beendet.
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.File;
public class sortarray {
public static void main (String []agrs){
String fileName= "read_ex.csv";
File file= new File(fileName);
try{
Scanner inputStream= new Scanner(file);
while(inputStream.hasNext()){
String data= inputStream.next();
String[] values = data.split(",");
System.out.println(values[1]);
}
inputStream.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
}
//This prints out the working directory
System.out.println("Present Project Directory : "+ System.getProperty("user.dir"));
}
}
InformationsquelleAutor mikeL | 2016-10-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwar mit dem Apache-CSV-Bibliothek wie bereits erwähnt von @Minjun.Y ist vollkommen in Ordnung, ich versuche eine Lösung zu bieten, die näher an Ihrem code und vielleicht einfacher für Sie zu Folgen:
Lassen Sie uns durch Sie gehen Schritt für Schritt:
Ich Hinzugefügt 3 mehr Importe:
ArrayList
,Arrays
undList
- Sie werden sehen, sehr bald, für was Sie gut sind. Sie alle sind getroffen von derjava.util
Bibliothek, eine standard-Bibliothek, die ist mit jedem JDK.Alle Klassennamen in Java beginnt mit einem Großbuchstaben (per Konvention - es baut mit einem kleinen Brief, wie gut, aber Sie sollten zu diesem übereinkommen) - ich "fixiert", diese in Ihrem code.
Habe ich ein 2-dimensionales array
List<List<String>> lines = new ArrayList<>()
. Blick mag dies ein wenig verwirrend auf den ersten, aber was es bedeutet ist, dass wir eine variable erstellenlines
hält, dass die Ergebnisse unserer Analyse. DieList<String>
syntax bedeutet, dass wir einen generischer TypList
hat einen parameter vom TypString
- in anderen Worten: eine Liste von strings. Das ganzeList<List<String>>
heißt, wir haben eine Liste von Listen von Zeichenketten, einen 2-dimensionalen string-array.Mit der
lines.add(Arrays.asList(values))
in Ihremwhile
Schleife, können wir hinzufügen, die Zeilen, die Sie analysiert zu diesem 2-dimensionalen array.Arrays.asList(values)
verwandelt dieString[]
- array in eineList
wie wir es brauchen, um kompatibel zu sein, um unsereList<List<...>>
geben. Dies ermöglicht Ihre Zeilen haben eine variable Länge.Den letzten Zeilen habe ich Hinzugefügt, drucken Sie einfach den Inhalt des 2-dimensionalen array und sollte Ihnen ein gutes Beispiel für, wie Sie auf die Werte in diesem array. Wenn Sie weitere Hilfe benötigen für dieses Konstrukt, überprüfen Sie die foreach-Schleife-Dokumentation.
Gegeben, diese als input-Datei (
read_ex.csv
):Wird das Programm drucken Sie die folgende Ausgabe:
Hoffe, das hilft 🙂
Sie sind herzlich willkommen! Hoffe, dass Sie wie Java 🙂
Ich war auf der Suche für einige Sache wie diese 🙂 vielen Dank für die Antwort
Wenn eine der csv-Werten enthält die Komma, wird Ihr code umgehen? Ich glaube, dass die Apache ' s Commons-Lösung behandelt den Fällen zu entkommen bösen Zeichen innerhalb Ihrer csv-Dateien.
Ich bekomme einen compile error "- Liste Typ die nicht-Parameter". Auch die input-Datei Linien sind gebrochen und laden nicht schön. Es scheint zufällig, und manchmal sind die Linien unterbrochen sind auf einem Feld. Eigentlich passiert sieben mal für jede Zeile. Das heißt, jede Zeile ist gebrochen bis sieben mal.
InformationsquelleAutor Michael Lihs
Hier ist eine bereits bestehende Lösung für Sie aus Apache Commons, die Apache Commons CSV Projekt. Finden Sie die Apache Commons CSV-parser guide.
Es ist sehr einfach zu bedienen, out of the box.
Hier ist eine grundlegende worfklow:
Wenn Sie nicht vertraut sind mit, wie
List
undArrayList
funktioniert in Java bitte beziehen sich auf so ziemlich jeder Java-tutorials online, einschließlich der Oracle Tutorial.Suche Stackoverflow für Hunderte von posts über die Verwendung von Commons CSV.
Anstatt zu erraten, Lesen Sie die Dokumentation. Die Klasse doc für
CSVFormat
erklärt, dass fünf verschiedene Formate werden von Commons CSV.EXCEL
ist eine Konstante (vordefiniertes) Objekt für den besonderen Geschmack der CSV generiert, die von Microsoft Excel-app. Zitat: Excel-Datei-format (mit Kommas als Wert-Trennzeichen). Beachten Sie, dass der tatsächliche Wert Trennzeichen verwendet, das von Excel ist von der locale abhängig...InformationsquelleAutor Minjun Yu