Dateiende erkennen, wie?

Status
Nicht offen für weitere Antworten.

HannsW

Bekanntes Mitglied
Moin,
ich muss eine SEEEEHr große Datei, deren Struktur ich nicht kenne ( Zahlen und Texte wechseln einander ab )
einlesen, und in mehrere kleinere Dateien zerlegen, um an die Text-teile zu gelangen. Zum Lesen nutze ich dies:
Code:
   try {
        br = new BufferedReader(new FileReader(inFileName));

    } catch (FileNotFoundException e) {
        System.out.println("DateiFehler : " + inFileName);
        System.exit(-1);
}

/****
----
***//
         try {
                str = br.readLine();
                if (str == null)
                    running = false;
            } catch (IOException ioe) {
                System.out.println("Abbruch wegen DateiLeseFehler : " + inFileName);
                System.exit(-2);
            }

Beim testen habe ich festgestellt, daß str== null "mittendrin" vorkommt, danach weitere Nutzdaten.

Gibt es eine Möglchkeit, das Dateiende festzustellen?
TIA Hanns
 

HannsW

Bekanntes Mitglied
Wildcard hat gesagt.:
http://java.sun.com/javase/6/docs/api/java/io/BufferedReader.html
Returns:
A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached
Das gibt nur dann null, wenn der Stream auch wirklich zu ende ist, oder du irgendetwas einliest, was nicht kompatibel zum Reader ist (Teile der Datei sind binär, falsches Encoding,...).

Ich denke schon,daß Teile davon binär sind.
Wenn ich OHNE den Test auf Null arbeite, läuft das Einlesen länger als mit.

Das konkrete Problem. Ich muss ne repository-Datei von visualAge fpr Java einlesen, und daraus die gespeicherten Textanteile extrahieren.
Das dacht ich halt mit nem bufferedreader zu machen.

Wenn ich nen inputstream nähme. Wie reagiert dieser denn an der Stelle, an der ich jetzt nen null-String erhalte?

Wirbel!
 

Wildcard

Top Contributor
Wenn du einen InputStream nimmst, bekommst du kein null. Ein Reader lässt sich nunmal nur auf textuelle Inhalte Anwenden.
 
S

Spacerat

Gast
Man kann doch einen InputStream mit einem Reader schachteln (mit InputStreamReader). Wenn man sich von dem InputStream und dem Reader jeweils eine Instanz behält, kann man vom Reader solange Strings (auch null-Strings) lesen, bis der InputStream eine EOFException wirft, die man eigentlich nur abfangen braucht. Allerdings können so auch Strings gelesen werden, die zufällig irgend einen unleserlichen Kram (eben Binärdaten) enthalten.

mfg Spacerat
 

HannsW

Bekanntes Mitglied
padde479 hat gesagt.:
Wie wär's mit der Klasse StreamTokenizer?

Welchen Vorteil brächte ein Streamtokenizer? Ich sehe nicht, wie ich diesen anwenden sollte.

Das Problem mit meiner Datei ist ja, daß ich beim Verwenden eines BufferedReaders das Ergebnis gegen null teste ( == dateiende) ich irgenwie in der Mitte der Datei einen String == null erhalte.

Wenn ich es mit nem InputStram mache, und
Code:
 while ((in = fin.read()) != -1)
laufen lasse. dauert es eeewwig. aber ich bekomme alles gelesen.

Mein nächster Test wird sein:
- über FILE die Dateigröße bestimmen
- Mit bufferedReader Strings einlesen.
- deren Länge summieren,
- und bei Dateigö0e beenden.


Dies zumindest, solange ich nicht weiß, wie die "nichtText"-Daten aufgebaut sind
 

Ark

Top Contributor
HannsW hat gesagt.:
Wenn ich es mit nem InputStram mache, und
Code:
 while ((in = fin.read()) != -1)
laufen lasse. dauert es eeewwig. aber ich bekomme alles gelesen.
1. Reader != InputStream, das sind also zwei völlig verschiedene Dinge.
2. Du hattest einen BufferedReader verwendet, deswegen ging das Einlesen auch vergleichsweise schnell. Wenn du Binärdaten ebensoschnell einlesen können willst, musst du einen BufferedInputStream benutzen.

Ark
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Datei endlos einlesen (am Dateiende warten) Allgemeine Java-Themen 3
K Bildschirm auslesen/ Text erkennen Allgemeine Java-Themen 5
I Best Practice Kreise erkennen Allgemeine Java-Themen 1
N Erkennen eines Programs Allgemeine Java-Themen 2
P Strukturänderungen/abnormalien in Logfiles automatisch erkennen Allgemeine Java-Themen 5
A 2D-Grafik Einfachster Ansatz, um sich wiederholende Figur in einem 2D-Image zu erkennen Allgemeine Java-Themen 1
T Java Windows sounds erkennen Allgemeine Java-Themen 1
M Backslash erkennen Allgemeine Java-Themen 4
D Flasche Eingabe erkennen Allgemeine Java-Themen 4
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Datei zugriffe erkennen Allgemeine Java-Themen 25
A Großbuchstaben erkennen (Prozente) Allgemeine Java-Themen 2
U Erkennen, ob PC benutzt wird Allgemeine Java-Themen 4
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
S Generellen MausKlick am PC erkennen Allgemeine Java-Themen 1
J Erkennen, ob Programm in JAR (neues Problem) Allgemeine Java-Themen 7
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
T Sechsecke, erkennen von bestimmten Werten Allgemeine Java-Themen 9
M Erkennen, in welcher Methode sich die VM befindet Allgemeine Java-Themen 6
Hoppelmann "Variable" in String erkennen Allgemeine Java-Themen 2
D IP / Domain in einem String erkennen Allgemeine Java-Themen 2
J jexcelapi - Erkennen von Sheets Allgemeine Java-Themen 3
B Mausbewegung im Thread erkennen (hoch/runter) Allgemeine Java-Themen 6
K Quadrat in einem Bild erkennen Allgemeine Java-Themen 33
D Regex Raute erkennen Allgemeine Java-Themen 2
F Groovy Erkennen geometrischer Formen in einem Kantenbild Allgemeine Java-Themen 4
K Wiederholungen in Datensatz erkennen?! Allgemeine Java-Themen 6
S Wörter ohne Leerzeichen erkennen Allgemeine Java-Themen 5
M Festplatte am Namen erkennen Allgemeine Java-Themen 2
A Erkennen welches Fenster bei windowDeactivated aktiviert wird? Allgemeine Java-Themen 2
C Reguläre Ausrücke Punkte im Satz richtig erkennen Allgemeine Java-Themen 6
J Exe Datei in Java erkennen??? Allgemeine Java-Themen 4
P Netzlaufwerke erkennen Allgemeine Java-Themen 3
H File Attribut bzw Link erkennen Allgemeine Java-Themen 5
DamienX Debug Modus zur Laufzeit erkennen Allgemeine Java-Themen 3
data89 Barcodes in Bild erkennen Allgemeine Java-Themen 17
G Wechseldatenträger erkennen Allgemeine Java-Themen 5
T Shapes vergleichen? Zeichen erkennen? Allgemeine Java-Themen 7
Daniel_L RTF - Format aus Zwischenablage erkennen und "einlesen"? Allgemeine Java-Themen 5
B Zeilenumbruch erkennen Allgemeine Java-Themen 22
S Dateiart erkennen Allgemeine Java-Themen 13
X Position eines Gegenstandes über Webcam erkennen Allgemeine Java-Themen 11
S unter UNIX - (symbolic) links erkennen? Allgemeine Java-Themen 12
D Datum korrekt erkennen Allgemeine Java-Themen 27
G Stringformen erkennen Allgemeine Java-Themen 8
N Endlosschleifen automatisiert erkennen (Code oder Laufzeit)? Allgemeine Java-Themen 6
G Größte zusammenhängende Fläche erkennen Allgemeine Java-Themen 3
K ersten programmstart erkennen Allgemeine Java-Themen 7
S JTree selektion erkennen und drauf reagieren Allgemeine Java-Themen 2
E Regexfrage (' erkennen) Allgemeine Java-Themen 4
C WindowStyle von Windows erkennen. Allgemeine Java-Themen 3
J Erkennen aus welchem Pfad das Jar gestartet wurde Allgemeine Java-Themen 6
B Erkennen welche Objekte den Heap verbrauchen? Allgemeine Java-Themen 2
MQue JButton erkennen Allgemeine Java-Themen 2
V Erkennen ob das Programm aus Jar File geladen wurde Allgemeine Java-Themen 9
T Einfachen Ton erkennen Allgemeine Java-Themen 7
R Hinzufügen von Dateien in einem Verzeichniss Auto. erkennen! Allgemeine Java-Themen 15
L objekte erkennen? Allgemeine Java-Themen 9
M Encoding automatisch erkennen Allgemeine Java-Themen 4
J Programmteile erkennen? Allgemeine Java-Themen 4
H Exception erkennen Allgemeine Java-Themen 10
S Farbe erkennen! Allgemeine Java-Themen 3
H existierende dateien erkennen Allgemeine Java-Themen 9
Natorion Erkennen ob das Programm mittels Jar-Datei oder class . Allgemeine Java-Themen 9
A Endlosschleifen automatisch erkennen Allgemeine Java-Themen 6
G String als Zahl erkennen Allgemeine Java-Themen 19

Ähnliche Java Themen

Neue Themen


Oben