pour modifier une ligne dans un fichier texte à l'aide de programme java
Ok, dire que j'ai un fichier texte appelé "people.txt" et il contient les informations suivantes:
1 adam 20 M
2 betty 49 F
3 charles 9 M
4 david 22 M
5 ethan 41 M
6 faith 23 F
7 greg 22 M
8 heidi 63 F
Fondamentalement, le premier nombre est l'ID de la personne, puis vient le nom de la personne, l'âge et le sexe. Dire que je veux remplacer la ligne 2, ou de la personne avec l'ID numéro 2 avec des valeurs différentes. Maintenant, je sais que je ne peux utiliser RandomAccessFile
pour cela, car les noms ne sont pas toujours le même nombre d'octets, ni à l'âge. Lors de la recherche aléatoire Java forums, j'ai trouvé que StringBuilder
ou StringBuffer
devrait suffire pour mes besoins, mais je ne suis pas sûr de savoir comment mettre en œuvre. Peuvent-ils être utilisés pour écrire directement dans le fichier texte? Je veux que cela fonctionne directement à partir de la saisie de l'utilisateur.
OriginalL'auteur | 2012-06-19
Vous devez vous connecter pour publier un commentaire.
Venez de créer pour vous un exemple
Vous devez déplacer
in.close()
avant d'ouvrir le fichier pour l'écriture, sinon vous risquez d'obtenir une exception, car le fichier peut être verrouilléOriginalL'auteur Rahul Agrawal
Une solution pourrait être de lire dans le fichier, ligne par ligne, de manipuler les lignes dont vous avez besoin (de l'exécution de certains d'analyse/de segmentation en unités pour obtenir l'ID/nom/etc.), ensuite, écrire toutes les lignes dans le fichier (en écrasant son contenu actuel). Cette solution dépend de la taille du fichier que vous travaillez avec: un fichier trop volumineux permettra de consommer beaucoup de mémoire que vous tenez l'ensemble de son contenu dans la mémoire à la fois
Une autre approche (pour réduire les besoins en mémoire) est de traiter le fichier lin-en-ligne, mais au lieu de la tenue de toutes les lignes dans la mémoire, vous écrivez la ligne courante dans un fichier temporaire après le traitement de chaque ligne, puis déplacez le fichier temporaire à l'emplacement du fichier d'entrée (d'écraser ce fichier).
Les classes
FileReader
etFileWriter
devraient vous aider à la lecture/écriture dans le fichier. Vous pourriez vouloir envelopper dans unBufferedReader
/BufferedWriter
pour améliorer les performances.Aussi, ne pas oublier de fermer le lecteur (d'ailleurs, l'écrivain) quand fini de lire (et à écrire) sur le fichier, de manière conséquente les accès au fichier n'est pas bloqué par le fichier restant ouvert
Si vous avez besoin de supprimer la ligne, puis il suffit de ne pas l'écrire (par exemple, ne le conservez pas dans la liste des lignes que vous écrivez à la fin).
j'ai fait de la suppression de la ligne...... que dois-je faire pour mettre à jour une ligne spécifique....????
J'ai lu dans un site... 1. Ouvrir le fichier en cours de lecture. 2. Ouvrez un nouveau fichier pour l'écriture. 3. Copier les données à partir de l'actuel vers le nouveau fichier jusqu'à l'endroit où vous souhaitez modifier des données. 4. Écrire les données modifiées dans le nouveau fichier. 5. Copiez le reste du fichier actuel vers le nouveau fichier. 6. Fermer les fichiers. 7. Supprimer le fichier actuel et renommer le nouveau fichier le nom du fichier en cours. je ne sais pas comment faire toutes ces
découvrez Rahul réponse. Ce qui est à gauche est à la sortie à l'emplacement d'origine. Pour ce faire, déplacer
in.close()
avant la création deFileWriter
(fstreamWrite
) et de changer le nom du fichier ouvert en écriture pour le nom de l'emplacement d'origine (changement"d:/new6.txt"
à"people.txt"
)OriginalL'auteur Attila