Le stockage des données dans le fichier txt au format spécifique
-
09-09-2019 - |
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
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 ...)