Java Scanner(Datei) daneben benehmen, aber Scanner(FIleInputStream) arbeitet immer mit der gleichen Datei

Ich habe ein komisches Verhalten mit Scanner. Es wird die Arbeit mit einem bestimmten Satz von Dateien, die ich benutze, wenn ich den Scanner(FileInputStream) Konstruktor, aber es wird nicht mit der Scanner(File) Konstruktor.

Fall 1: Scanner(File)

Scanner s = new Scanner(new File("file"));
while(s.hasNextLine()) {
    System.out.println(s.nextLine());
}

Ergebnis: keine Ausgabe

Fall 2: Scanner(FileInputStream)

Scanner s = new Scanner(new FileInputStream(new File("file")));
while(s.hasNextLine()) {
    System.out.println(s.nextLine());
}

Ergebnis: der Inhalt der Datei-Ausgaben an die Konsole.

In der input-Datei ist eine java-Datei, die eine einzelne Klasse.

Ich doppelt geprüft, programmgesteuert (in Java), dass:

  • die Datei vorhanden ist,
  • lesbar ist,
  • und hat einen nicht-null-Größe.

In der Regel Scanner(File) funktioniert für mich in diesem Fall, ich bin nicht sicher, warum es nicht jetzt.

  • Was macht die Datei enthalten?
  • Und das ist der einzige code, oder gibt es andere Dinge, die geschehen rund um alles, was? Das snippet scheint unvollständig ist, wie es wäre, zumindest einige exception-handling statt. Könnten Sie uns den ganzen code?
  • Interessante Frage. Bitte poste deinen aktuellen code und einen pastebin mit Ihrer Datei. Auch, was ist der output von Charset.defaultCharset() auf Ihrem system?
  • Dachte ich auch, aber die Quelle der Scanner scheint anzudeuten, dass Sie verwenden die default-Zeichensatz in beiden Fällen, wenn nicht mit einem Konstruktor, der würde angeben, es ausdrücklich.
  • Ah, ein weiteres sehr wichtig der follow-up-Frage: was ist die Größe der Datei?
  • Ich habe aktualisiert mein original-Beitrag zu haben, der code kopiert aus meinem Quellcode-Datei. Nur als test, ich bin das Lesen der Datei und die Ausgabe an das terminal. Die Datei ist eine java-Quelldatei Formular ein open-source-Projekt. Mein Zeichensatz ist UTF-8. Die Größe der Datei ist 18357 bytes.
  • Größe spielt keine Rolle, schau unten meine Antwort (ich fand heraus, wie es passiert, nicht, warum eigentlich)
  • Wow, ich war gerade das umgekehrte problem (funktioniert mit File, nicht mit FileInputStream). Ich weiß nicht, ob es Verwandte, aber +1 dennoch. Verschwendet eine gute Stunde auf dieser.

InformationsquelleAutor kashiko | 2012-02-29
Schreibe einen Kommentar