2011-01-15 5 views
4

J'essaie de créer un fichier texte délimité par tabulation afin que la sortie apparaisse comme des colonnes, mais pour une raison quelconque, l'onglet apparaît à des emplacements différents. Ceci est dû au fait que les valeurs de données sont de tailles différentes.Comment créer correctement un fichier texte délimité par des tabulations en Java

voici comment je construis les lignes et les colonnes

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

Et la sortie sort comme

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

Comme vous pouvez voir les valeurs avec des entrées de texte plus sur les causes premières de la colonne la deuxième colonne se déplace légèrement plus loin même si les deux colonnes sont séparées par deux onglets. Comment puis-je m'assurer que l'emplacement de la deuxième colonne est sur la même ligne?

Merci

Répondre

5

La largeur d'un caractère de tabulation n'est pas défini et dépend de ce que vous utilisez pour afficher le texte. Si vous souhaitez aligner les colonnes, utilisez des espaces à la place. Vous pouvez aligner avec des espaces en utilisant un format printf de %10s par exemple.

1

Cela n'a rien à voir avec le fait que le fichier soit "correct" ou non et tout ce qui concerne l'affichage des données est un problème distinct. Pensez à utiliser printf (...) ou String.format (..) ou d'autres variantes de la classe Formatter pour formater vos données pour l'affichage. Ou si une interface graphique, afficher dans un JTable.

3

Vous devrez définir la longueur de la chaîne pour laisser dire 25 caractères et remplir la différence x = (25 - column1.length) avec x quantité d'espaces. N'oubliez pas d'utiliser la police mono-espace dans votre éditeur de texte.

pad Pour la chaîne, vous pouvez utiliser ceci: 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"); 
Questions connexes