2009-04-11 6 views
2

ma question est liée à ma question précédente (How to display data from txt file in specific format). Je me demandais s'il était possible, en premier lieu, de stocker des données sur un fichier txt dans un format spécifique plutôt que de le stocker d'abord, puis de le récupérer à nouveau et de l'afficher dans un format spécifique?Stocker des données dans un fichier txt dans un format spécifique

par exemple. au lieu de stocker des données sur fichier txt comme celui-ci

 
Jessica 
Walking 
20 minutes 
Matthew 
Run 
10 minutes 

Je voulais stocker dans un fichier txt dans ce format

 
Jessica Walking 20 minutes 
Matthew Run  10 minutes 

Répondre

3

En ce qui concerne votre commentaire à la réponse de Adeel:

Merci adeel825, mais je ne sais pas où mettre le "\ t" .. jusqu'ici j'utilise cette méthode: new PrintStream (fout) .println (nom); nouveau PrintStream (fout) .println (exercice); nouveau PrintStream (fout) .println ("10 minutes");

Tout d'abord, ne pas appeler "new PrintStream(fout)" chaque fois que vous imprimez quelque chose. Pour ce faire:

PrintStream ps = new PrintStream(fout); 
ps.print(name); 
ps.print('\t'); 
ps.print(exercise); 
ps.print('\t'); 
ps.print(time); 
ps.println(); 

Ou simplement:

PrintStream ps = new PrintStream(fout); 
ps.println(name + '\t' + exercise + '\t' + time); 

Modifier

En réponse à votre commentaire:

une question ... une partie du nom sont trop long et il faut plus de tabulation ... J'ai mis ps.print ('\ t', '\ t'); mais il semble ne pas fonctionner ..

Si c'est un problème, il semble que vous essayez de les stocker de la manière dont vous voulez les afficher. J'avais supposé que vous essayiez de les stocker d'une manière qui serait facile à analyser par programmation. Si vous voulez les stocker affichés dans des colonnes, je suggère de remplir avec des espaces plutôt que des onglets.

Si vous savez que toutes les colonnes vont être inférieur à, disons, 30 caractères, vous pourriez faire quelque chose comme ça avec printf:

ps.printf("%30s%30s%30s%n", name, exercise, time); 

Cette syntaxe peut regarder tout à fait Byzantin si vous êtes pas habitué à cela .. basiclly chaque "% 30s" signifie pad l'argument de la chaîne de sorte qu'il est d'au moins 30 caractères de large. Votre résultat ne s'affichera pas correctement si l'une des valeurs comporte 30 caractères ou plus. Si vous ne pouvez pas savoir à l'avance, vous devrez parcourir les valeurs de chaque colonne pour déterminer la largeur des colonnes.

+0

Merci beaucoup Kip ... thats vraiment aidé moi :-) – Jessy

+0

encore une question ... certains du nom sont trop longs et il faut plus d'onglet .. J'ai mis ps.print ('\ t', '\ t'); mais il semble ne pas fonctionner .. – Jessy

1

Il n'y a pas de problème avec le stockage des données de cette façon. Tout ce que vous devez faire est d'écrire les valeurs et les délimiter avec un caractère de tabulation "\ t"

+0

Merci adeel825, mais je ne sais pas où mettre le "\ t" .. jusqu'à présent j'utiliser cette méthode: nouveau PrintStream (fout) .println (nom); \t \t \t nouveau PrintStream (fout) .println (exercice); \t nouveau PrintStream (fout) .println ("10 minutes"); – Jessy

+0

Vous feriez quelque chose comme println ("Jessica \ tWalking \ t20 minutes"). – adeel825

+0

@ Jessy- voir ma nouvelle réponse concernant les informations que vous avez laissées dans ce commentaire (c'était plus que je ne pouvais entrer dans un commentaire et j'ai pensé qu'il devait être adressé comme une réponse) – Kip

0

Vous devez "handcode" votre mise en forme. La meilleure façon de le faire serait d'envelopper votre fichier accès à un code quelque part, et de créer quelque chose comme:

OpenFile() 
CreateEntry(name, type, time) 
0

Si vous voulez écrire des enregistrements de longueur fixe, vous pouvez utiliser la chaîne.[format] [1] méthode

ps.println(String.format("%20s%20s%20s",name,exercise,time)) 

Cela créera un tableau de 20 caractères dans chaque champ. Vous pouvez readup sur la syntaxe here

[1]: http://java.sun.com/javase/6/docs/api/java/lang/String.html#format(java.lang.String, java.lang.Object ...)

+0

Hmm le formatage semble avoir un bug. Ce lien fonctionne dans l'aperçu ... –

+0

Oui, Javadocs sont un ours à lier. –

Questions connexes