2016-03-24 3 views
0

Ich habe Code geschrieben, um eine Tab-getrennte Datei jeweils eine Zeile (Zeile) zu lesen. Ich habe die Datei aus einer Excel-Tabelle erstellt, indem ich sie als tabulatorgetrennte Textdatei gespeichert habe. Jede Zeile in der Tabelle hat 39 Spalten, also 38 Registerkarten. Der Zweck davon ist, in der Lage zu sein, jedes der 39 Datenbits einschließlich leerer Bits in XML-Tags zu verpacken. Dieser Code lautet jedoch a. druckt jedes einzelne Datenelement in der Tabelle Zeile für Zeile, ich habe Probleme mit dem Zugriff auf ein bestimmtes Datenelement, was wesentlich ist. Die erste Spalte ist eine Benutzer-ID, die zwölfte Spalte ist eine primäre Adresszeile 1 und die 36-Spalte ist beispielsweise eine Benutzerkennung. Wenn ich jedoch den Code unter get (55) ändere, bekomme ich eine IndexOutOfBounds-Ausnahme. Wenn ich nach dem ersten Datenelement, get (0), frage, listet das Programm jedes einzelne Datenelement in der gesamten Datei auf.Lesen Tab-getrennte Datei in Java eine "Zeile" zu einer Zeit

boolean resultFlag = false; 
    try 
    { 
    theScanner = new Scanner(new FileReader("C:\\WMS\\GGBTS_Patron_Data_20160317_V1-0.txt")); 
    while (theScanner.hasNextLine()) 
    { 
    patronRow = theScanner.next(); 
    itemArray = new ArrayList(Arrays.asList(patronRow.split("\t"))); 
    for(int i=0; i<itemArray.size(); i++) 
     { 
     System.out.println(" -->"+itemArray.get(i)); 
     }   
    } 
    resultFlag = true; 
} 

Was muss ich die 39 Elemente aus einer einzigen Reihe tun müssen, erhalten und zu ihnen nach Indexnummer verweisen zu können, bevor auf die nächste logische Zeile los? Ich weiß nicht, ob Excel tabulatorgetrennte Dateien mit \ n \ r oder ähnlichem speichert oder nicht. Hilfe bitte. Ich bin hier etwas behindert, denn obwohl ich viele Jahre lang Programmierer war, bin ich in meiner jetzigen Situation akademischer Referenzbibliothekar in einer kleinen Bibliothek und es gibt keine Möglichkeit, IT-Unterstützung zu bekommen. Ich kenne sowieso besser programmieren als unsere beiden IT-Leute, die sich mit Operationen beschäftigen, nicht mit Kodierung. Vielen Dank.

Ken

+0

Haben Sie sich in Verwenden einer CSV-Parsing-Bibliothek? Viele von ihnen können ein konfigurierbares Feldtrennzeichen verwenden. – dnault

Antwort

1

Diese Zeile:

patronRow = theScanner.next(); 

Sollte sein:

patronRow = theScanner.nextLine(); 

Sie wollen die ganze Linie erhalten dann auf \t gespalten ...

Verwandte Themen