Einlesen von Daten via BufferedReader

PaulGustav

Mitglied
Hallo zusammen,

nachdem ich nun etliche Versuche angestellt habe und beinahe verzweifle, würde ich geren mal wieder auf eure Hilfe zurückgreifen.

Mir liegt folgendes Problem vor:
Mittels einer Methode rufe ich eine vorhandene Liste auf, welche Dateipfade enthält. Die Inhalte der angegebenen Dateien (gzipped csv) sollen zur nachträglichen Bearbeitung alle in eine Liste rawDataList geschrieben werden. Leider bekomme ich es nicht hin, jede Datei von Anfang bis Ende in die Liste zu schreiben. Was mache ich hier eurer Meinung nach falsch?

Hier mein Code:
Code:
private List<String> getLines() {
        List<String> rawDataList = new ArrayList<String>();
        int buffersize = 2048;
        BufferedReader br = null;
       
        for (int j=0; j<getFiles().size();j++){
            try{
            FileInputStream fin = new FileInputStream(getFiles().get(j));
            BufferedInputStream in = new BufferedInputStream(fin);
            FileOutputStream out = new FileOutputStream("tmpData.txt");
            GzipCompressorInputStream gzIn = new GzipCompressorInputStream(in);
            final byte[] buffer = new byte[buffersize];
            String line;
            int n;
            while (-1 != (n = gzIn.read(buffer)))
                out.write(buffer, 0, n);
            br = new BufferedReader(new FileReader("tmpData.txt"));
            if ((line = br.readLine()) != null){
                rawDataList.add(br.readLine());
            }   
            out.close();
            gzIn.close();
            }
            catch(IOException ex){
                  ex.printStackTrace();
               }
        }
        return rawDataList;
 

PaulGustav

Mitglied
Zudem muss ich anmerken, dass ich das Auslesen der Daten über eine temporäre text-Datei mache, da ich weder den GZipCompressor von Apache noch den GZipInputStream von Java nicht korrekt verstehe. Ein hilfreicher Beitrag dazu, wäre auch super nett.

Danke,
Paul
 

mrBrown

Super-Moderator
Mitarbeiter
Von dem GzipCompressorInputStream kannst du genauso lesen, wie von einem BufferedInputStream, wenn du Reader nutzen willst zB mit InputStreamReader.
Was du falsch machst kann man nur raten, was für ein Fehler tritt denn auf?
 

PaulGustav

Mitglied
Oh enschtuldigt. Ich hatte meine Problematik nich konkret dargestellt. Die Ausgaben, die in der oben dargestellten rawDataList gespeichert werden, wurden nie komplett dargestellt. Es fehlte immer die erste Zeile und auch Weitere.
Ich habe meine Fehler nun erkennen können...

Zum Einen habe ich zweimal die Methode readLine() auf das Objekt br angewandt. Dies hatte zur Folge, dass beim ersten Aufruf die erste Zeile der Inputdaten schon ausgelesen wurde. Infolgedessen wurde dann (erst) die zweite Zeile ausgelesen und in die rawDataList eingepflegt.

Ferner hatte ich das Problem, dass ich das ganze über die temporäre Datei lösen musste. Wie mrBrown schon erwähnt hatte, geht das auch effizienter. Man muss lediglich den Ouput des GZipCompressors über einen Reader dekodieren und dann in den BufferedReader einlesen.

Allles in allem sieht die Lösung wie folgt aus:
Code:
private List<String> getLines() {
        List<String> rawDataList = new ArrayList<String>(1600000);
        String line ="";
        BufferedReader br = null;
        List<File> fileList = new ArrayList<File>();
        fileList = getMapFiles();
        for (int j=0; j<fileList.size();j++){
            try{
                FileInputStream fin = new FileInputStream(fileList.get(j));
                GzipCompressorInputStream gzIn = new GzipCompressorInputStream(fin);
                Reader rd = new InputStreamReader(gzIn, "US-ASCII");
                br = new BufferedReader(rd);
                while ((line = br.readLine()) != null)
                    rawDataList.add(line);
            }
            catch(IOException ex){
                  ex.printStackTrace();
               }
        }
        return rawDataList;
    }

Gruß Paul
 

mrBrown

Super-Moderator
Mitarbeiter
Falls du's noch etwas aufgeräumter haben willst:
Du kannst line und br in das try verschieben, statt der for eine foreach, try-with-resources und statt der while eine for-schleife nutzen ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
V Einlesen von Daten Java Basics - Anfänger-Themen 8
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
J Java Daten von Konsole einlesen (Spezielles Problem) Java Basics - Anfänger-Themen 6
H Daten einlesen und verarbeiten Java Basics - Anfänger-Themen 4
M Methoden Daten aus einer SQL-Abfrage in eine mehrdimensionales Array einlesen Java Basics - Anfänger-Themen 7
c_sidi90 JTable Daten stückweise einlesen Java Basics - Anfänger-Themen 14
S Unbekannte Daten einlesen, speichern und in einem byte Array speichern Java Basics - Anfänger-Themen 3
B Daten einlesen Java Basics - Anfänger-Themen 5
M XML Daten einlesen und zurückgeben Java Basics - Anfänger-Themen 7
1 Daten einlesen und bearbeiten (mehr als 2000 Zeichen) Java Basics - Anfänger-Themen 8
G Null P. E. beim einlesen von daten in eine tabelle? Java Basics - Anfänger-Themen 2
D CSV Daten einlesen Java Basics - Anfänger-Themen 2
I Daten über Konsole einlesen Java Basics - Anfänger-Themen 4
M binäre Daten als Double einlesen Java Basics - Anfänger-Themen 22
M binäre daten einlesen Java Basics - Anfänger-Themen 2
D Einlesen von komprimierten gzip Daten Java Basics - Anfänger-Themen 2
J Daten von einem (char*)Socket einlesen. Java Basics - Anfänger-Themen 3
S Daten aus txt-datei einzeln nach Spalten einlesen Java Basics - Anfänger-Themen 16
S Daten zeilenweise aus Datei einlesen Java Basics - Anfänger-Themen 7
G Designfrage: Daten einlesen und Fortschrittsdialog anzeigen Java Basics - Anfänger-Themen 5
V Daten einlesen und verwenden Java Basics - Anfänger-Themen 4
T Daten aus einer .csv Datei in einen Vector einlesen Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
H Einlesen Java Basics - Anfänger-Themen 8
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
R txt Einlesen und Verarbeiten Java Basics - Anfänger-Themen 15
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben