2016-04-11 14 views
-2

Ich habe Probleme beim Lesen einer Datei in ein Char-Array und dann Vergleichen jedes Char mit einem zufälligen Buchstaben, sagen wir "e".java filereader: Lesen einer Datei in ein Char-Array

Hier ist mein Code so weit, ich denke, cbuf ist null, aber ich verstehe nicht, ich dachte, das sollte den Inhalt der Datei darin lesen.

+1

Verwenden Sie einen Debugger. – redFIVE

Antwort

1

Du hast deine Frage fast beantwortet.

cbuf wird auf Null initialisiert. Wer weist dieser Variablen jemals zu? Also, wo sollte fr.read(cbuf) die Zeichen schreiben?

Auch Sie haben nicht das eigentliche Problem, das Sie erleben! Ich würde erwarten, dass die read() Zeile für eine NPE innerhalb der Lese markiert wird.

Und aus diesem Grund identifiziert Ihre Bemerkung genau den Grund.
Es fehlt nur, um zu erkennen, dass eine Null nicht magisch verschwindet, sondern eine explizite Zuweisung erfordert.
Dies ist, was Ihr Code fehlt. Initialisiere cbuf!

Sie sollten dann über die Semantik der read()-Methode lesen, , da Ihr Code immer noch eine Schleife fehlt, um die gesamte Datei zu lesen. (Achtung, die Datei könnte größer sein als Ihr Puffer!)

+0

Danke. Zuerst habe ich nicht verstanden, warum cbuf null ist, weil ich dachte, ich mache es nicht null, indem ich von meinem filereader hinein lese, als ich schrieb: fr.read (cbuf); – stfudonny

1

Sie haben Ihren CharBuffer-Cbuf als null deklariert und dann versucht, ihn zu verwenden, was Ihnen eine Nullzeigerausnahme gibt. Deklarieren cbuf wie folgt, 1024 auf eine geeignete Größe zu ändern, was auch immer für Dateigröße Sie verwenden:

CharBuffer cbuf = CharBuffer.allocate(1024); 

Sie werden auch die Linie ändern müssen

if (cbuf.charAt(i) == 'e') 

zu

if (cbuf.get(i) == 'e')