Dies ist eine ziemlich einfache Aufgabe, und ich habe dies oft getan. Aber im Moment stecke ich an dieser trivialen Codezeile fest.Problem beim Lesen einer Datei mit Scanner
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Test {
private static Scanner scan;
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
File file = null;
switch (1) {
case 1:
file = new File("W:\\Umesoft Evobus\\From AQUA\\Aqua data_ All\\20090101-20090630_datenabzug_tilde.txt");
break;
case 2:
file = new File("W:\\Umesoft Evobus\\From AQUA\\Aqua data_ All\\20090701-20091231_datenabzug_tilde.txt");
break;
}
scan = new Scanner(file);
String x = scan.nextLine();
System.out.println(x);
}
}
Wenn ich versuche, die erste Datei zu lesen, bekomme ich eine NoSuchElementException. Wenn ich versuche, die zweite Datei zu lesen, habe ich keine Probleme. Beide Dateien stammen aus derselben Quelle und haben dasselbe Format. Ich bin sicher, es gibt keine Probleme in Bezug auf die Eingabedateien. Die erste Zeile in beiden Dateien ist identisch.
Kann jemand diese Situation erklären?
Das obige Programm dient nur zum Testen. Daher habe ich einen Schalter verwendet, um die Datei auszuwählen.
Im aktuellen Programm wird eine Reihe von Dateien vom Benutzer ausgewählt. Und jedes Mal wird diese Datei übersprungen. Die Eingabedateien sind Datendateien, die von einem anderen Programm generiert werden. Sie sind CSV-Dateien sehr ähnlich, aber das hier verwendete Trennzeichen ist ~ aus bestimmten Gründen. Sie können nicht leer sein, denn selbst im schlimmsten Fall würden sie Header haben.
Screenshot of the file contents in notepad++:
Ausgang für die Datei 1:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at controller.Test.main(Test.java:24)
Ausgang für Datei 2:
Weltherstellercode~FIN~Fahrzeug_Baumuster~~Motoridentnummer~Getriebe_Identifizierungsnummer~Produktionsdatum~Produktionsnummer_Fzg~Erstzulassungsdatum~Reparaturdatum~Fahrzeug_Laufleistung_in_km~Interne_VEGA_Antragsnummer~TGA~Fehlerort~~Fehlerart~~Reparaturart~~Hauptschadensteil~Reparaturland_(G&K)~~Reparaturbetrieb_(G&K)~~Mitteilungstext~Gutschriftsdatum_(Summe)~Anzahl_Beanstandungen~Gesamtkosten~Lohnkosten~Materialkosten~Summe_DH+NK~Anzahl_Arbeitswerte_(Gutgeschrieben)
Sind Sie sicher, dass Sie keine nicht druckbaren Zeichen in der ersten Zeile haben? – npinti
JavaDoc sagt: '@throws NoSuchElementException, wenn keine Zeile gefunden wurde ' –
warum haben Sie sogar einen Schalter Fall beide Bedingungen führt zu gleichen Ausgang – Priyamal