2011-01-15 7 views
4

Ich versuche, eine Registerkarte delimeted Textdatei zu erstellen, so dass die Ausgabe wie Spalten angezeigt wird, aber aus irgendeinem Grund wird die Registerkarte an verschiedenen Orten angezeigt. Dies liegt daran, dass die Datenwerte unterschiedliche Größen haben.So erstellen Sie eine tabulatorgetrennte Textdatei in Java

hier ist, wie ich die Zeilen am Aufbau und Spalten

output.append("|\t" + column1 + "\t\t\t:\t" + column2 +" \t\t\n"); 

Und die Ausgabe kommt aus als

| activeSessions  : 0   
| duplicates  : 0   
| expiredSessions   : 0   
| rejectedSessions  : 0   
| sessionMaxAliveTime   : 0   
| sessionCounter  : 0   

Wie Sie die Werte mit längeren Texteinträge in der ersten Spalte Ursachen sehen können Die zweite Spalte wird etwas weiter entfernt, obwohl beide Spalten durch zwei Registerkarten getrennt sind. Wie kann ich sicherstellen, dass sich die zweite Spalte auf derselben Zeile befindet?

Dank

Antwort

5

Die Breite eines Tab-Zeichen nicht definiert und hängt davon ab, was Sie den Text anzuzeigen verwenden. Wenn Sie die Spalten ausrichten möchten, verwenden Sie stattdessen Leerzeichen. Sie können mit Leerzeichen beispielsweise mit einem printf-Format von %10s ausrichten.

1

Dies hat nichts damit zu tun, ob die Datei "korrekt" ist oder nicht und alles mit Ihrer Anzeige der Daten zu tun hat, was ein separates Problem ist. Verwenden Sie printf (...) oder String.format (..) oder andere Varianten der Formatter-Klasse, um Ihre Daten zur Anzeige zu formatieren. Oder wenn eine GUI in einer JTable angezeigt wird.

3

Sie müssen die Länge der Zeichenfolge festlegen, um beispielsweise 25 Zeichen einzugeben und die Differenz x = (25 - column1.length) mit x Anzahl der Leerzeichen zu füllen. Vergessen Sie nicht, in Ihrem Texteditor eine Mono-Space-Schriftart zu verwenden.

Um Pad die Zeichenfolge können Sie verwenden: StringUtils.rightPad(String, int)

import org.apache.commons.lang.StringUtils; 
output.append("|\t" + StringUtils.rightPad(column1, 25) + "\t\t\t:\t" + StringUtils.rightPad(column2, 15) +" \t\t\n"); 
Verwandte Themen