readLine() liest nur jede dritte Zeile?

Status
Nicht offen für weitere Antworten.

pope

Mitglied
Tag allerseits, ich hab mich mal etwas in Java gestürzt, bin aber iregenwie relativ schnell an meine Grenzen gestossen.
Ich möchte ein per OpenDialoge gewähltes File in ein StringArray einlesen, allerdings nimmt es irgendwie nur jede dritte Zeile.

Kann mir jemand weiterhelfen

package javaapplication2;

import javax.swing.*;
import java.io.*;
import java.io.File;
import java.io.IOException;
import java.lang.String;
import javax.swing.filechooser.FileFilter;

public class DBController {

public String fileContent = "";
private static byte[] $buffer = new byte[2048];

public String splitter(String fileContent) {
return null;
}

public String getText() {
return null;
}

public void chooser() throws FileNotFoundException, IOException {

String[] buffer = new String[50];
String dir = System.getProperty("user.dir");
JFileChooser fileChooser = new JFileChooser(dir);

fileChooser.setFileFilter(new FileFilter() {

@Override
public boolean accept(File f) {
return f.isDirectory() ||
f.getName().toLowerCase().endsWith(".z1p") || f.isDirectory() ||
f.getName().toLowerCase().endsWith(".s1p");
}

@Override
public String getDescription() {
return "z1p, s1p-Files";
}
});

if (fileChooser.showOpenDialog(null) ==
JFileChooser.APPROVE_OPTION) {

System.out.println(fileChooser.getSelectedFile().toString());
try {
File file = fileChooser.getSelectedFile();
FileInputStream inputstream = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(inputstream);
BufferedReader bff = new BufferedReader(reader);
StringBuffer content = new StringBuffer();
// buffer = new char[(int) file.length()];
String c = "";
int i = 0;
content.append(buffer[0]);

// count numbers of lines in file f
int cFL;
int anzahlFL = 0;
while ((cFL = bff.read()) != -1) {
if ((cFL = bff.read()) == 10) //10 is Character-Code of \n
{
++anzahlFL;
}
}
String[][] artikelFL = new String[anzahlFL][5]; //Anlegen des Arrays nach Anzahl der Datensätze



while ((bff.readLine()) != null) {
buffer = bff.readLine();
// content.append(separator);
content.append(buffer);
i++;
System.out.println(bff.readLine());
}


// System.out.println(content.toString());
} catch (IOException e) {
System.out.print("Es gab einen Fehler");
}

} else {
System.out.println("Auswahl abgebrochen ");
}
System.exit(0);
}
}
 

Verjigorm

Top Contributor
Du rufst doch in deiner while-schleife 3mal bff.readLine() auf ...
Du musst das direkt im Kopf der while-schleife einer variablen zuweisen
Etwa so:
Code:
while ((buffer[i] = bff.readLine()) != null) {
und dann für jedes weitere bff.readLine() benutzt du stattdessen buffer
 
Zuletzt bearbeitet:

0x7F800000

Top Contributor
Code:
                while ((bff.readLine()) != null) {            //1
                    buffer[i] = bff.readLine();                    //2
//                    content.append(separator);
                    content.append(buffer[i]);
                    i++;
                    System.out.println(bff.readLine());        // 3
                }
Also ich weiß nicht was du da gezählt hast, ich sehe jedenfalls 3 verschiedene readLine aufrufe, diese verschlucken dementsprechend 3 Zeilen, von den du nur eine bearbeitest. es sollte so aussehen:
Code:
String line;
while((line=bufferedReader.readLine())!=null){
    process line
}
Ferner sollte man wohl noch anmerken, dass diese Gruselige Konstruktion:
Code:
int cFL;
                int anzahlFL = 0;
                while ((cFL = bff.read()) != -1) {
                    if ((cFL = bff.read()) == 10) //10 is Character-Code of \n
                    {
                        ++anzahlFL;
                    }
                }
                String[][] artikelFL = new String[anzahlFL][5]; //Anlegen des Arrays nach Anzahl der Datensätze
Zum einen, wie gesagt, gruselig, zum anderen extrem performancefressend, und zu guter letzt völlig überflüssig ist. Wozu willst du da irgendwelche starren Arrays verwenden? Arrays sind nur für low-level kram im inneren der Datenstrukturen gedacht, und hier (da die dimension vorher ja nicht bekannt ist) eher ungeeignet. Verwende LinkedList<String>.
 

pope

Mitglied
ok, mir fehlen da wohl noch etwas die JAVA Tasks
versuche mal eure Inputs umzusetzten, sonst meld ich wieder :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S readLine() liest nur jede 2. Zeile Allgemeine Java-Themen 3
kodela Byte Order Mark (BOM) bei readLine() ignorieren Allgemeine Java-Themen 5
K BufferedReader.readLine erkennt Zeilenende nicht Allgemeine Java-Themen 11
A bufferedReader readline, encoding Allgemeine Java-Themen 5
V wie bufferedreader.readline() unterbrechen? Allgemeine Java-Themen 4
D BufferedREader#readLine Allgemeine Java-Themen 20
J RandomAccessFile readLine(); Allgemeine Java-Themen 5
J BufferedReader br.readLine(); Allgemeine Java-Themen 22
S Stream ReadLine() Allgemeine Frage Allgemeine Java-Themen 5
conan2 BufferedReader.readLine() von anderem Thread aus beenden Allgemeine Java-Themen 4
S readLine oder sowas? Allgemeine Java-Themen 13
N readLine() von BufferedReader hält das Programm fest/auf! Allgemeine Java-Themen 10
R read/readline blockiert Allgemeine Java-Themen 5
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
Joker4632 Klassen Buffered Reader liest die Leerzeichen am Zeilen Ende nicht mehr Allgemeine Java-Themen 2
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
1 InputStream liest die letzte Zeile nicht ein Allgemeine Java-Themen 2
C Velocity liest template-Dateien nicht aus einem Verzeichnis Allgemeine Java-Themen 3
P Properties liest nicht alles aus Datei aus Allgemeine Java-Themen 17
M Funktion liest nach Textaus aus der vorigen Zeile Allgemeine Java-Themen 2
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
B Schlossknacker (Jede mögliche Zahlenkombination ausgeben) Allgemeine Java-Themen 18
AssELAss Best Practice Checksumme über jede Spalte zweier Tabellen und vergleichen Allgemeine Java-Themen 3
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
2 jede Stunde Methode ausführen Allgemeine Java-Themen 8
DStrohma Jede node in JTree mit eigenem Icon Allgemeine Java-Themen 7
M .txt Datei öffnen und jede Zeile mit festem String verketten Allgemeine Java-Themen 5
S Warum benötigt jede Internetseite unbedingt das neuste Java? Allgemeine Java-Themen 11
T Klasse mit neuer Eigenschaft für jede Subclass (kompliziert) Allgemeine Java-Themen 6
F Bluetooth! Jede Antwort hilft! Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben