Question

ma question est liée à ma question précédente ( Comment afficher les données du fichier txt format spécifique).

Je me demandais s'il est possible à la première place, pour stocker des données sur le fichier txt au format spécifique plutôt que de le stocker d'abord, puis retreived à nouveau et l'afficher en format spécifique?

par exemple. au lieu de stocker des données sur fichier txt comme ceci

Jessica 
Walking
20 minutes
Matthew
Run 
10 minutes

Je voulais l'enregistrer dans le fichier txt dans ce format

Jessica   Walking    20 minutes
Matthew   Run        10 minutes 
Était-ce utile?

La solution

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

  

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

Tout d'abord, ne pas appeler à chaque fois de « new PrintStream(fout) » 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 ... certains du nom sont trop longs et il faut plus tab..I ont mis ps.print ( « \ t », « \ t »); mais il semble ne fonctionne pas ..

Si cela est un problème, il semble que vous essayez de les stocker de la manière que vous souhaitez les afficher. Je supposais que vous essayez de les stocker d'une manière qui serait facile à analyser par programme. Si vous souhaitez stocker les données affichées dans les colonnes, je vous suggère de rembourrage avec des espaces plutôt que des onglets.

Si vous savez que toutes les colonnes vont être inférieur à, disons, 30 caractères, vous pouvez 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 n'êtes pas habitué .. basiclly chaque « % 30s » signifie pad l'argument de chaîne pour qu'elle soit au moins 30 caractères. Votre résultat ne sera pas droit si l'une des valeurs sont 30 caractères ou plus large. Si vous ne pouvez pas savoir à l'avance, vous aurez à boucle à travers les valeurs de chaque colonne pour déterminer la largeur des colonnes doivent être.

Autres conseils

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 »

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

OpenFile()
CreateEntry(name, type, time)

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

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

Cela va créer une table de 20 caractères dans chaque champ. Vous pouvez readup sur la syntaxe ici

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top