Sauvegarder Modification dans un fichier JAVA

Fermé
sarounette - 9 mai 2012 à 10:25
 sarounette - 11 mai 2012 à 11:18
Bonjour tout le monde ,

Mon probleme est le suivant :

je dispose d'une interface , j'affiche le contenu d'un fichier (soit par exemple texte.txt) dans le JTextArea de cette interface, comment je fais si je veux modifier le texte affiché et sauvegarder la modification dans le fichier original ?? si je procede avec une méthode d'écriture le mot ou la phrase modifiée va etre traitée comme étant une nouvelle ligne par contre moi je veux que le mot lui meme soit modifié. Exemple : j'affiche " je m'appele" à partir de texte.txt ----> je modifie dans le JTextarea et je trouve "je m'appelle " dans le texte.txt.

est ce que cela est faisable?? y aurait il quelqu'un qui puisse m'aider pleaaase c'est trés important !!
A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
9 mai 2012 à 11:38
Est-ce que l'affichage correspond à TOUT le fichier, ou juste à une partie ?
Ce qu'il faudrait c'est surement utiliser un TextListener pour écrire dans le fichier lorsque le JTextArea détecte le textValueChanged (peut-être pas à chaque lettre tapée, mais au moins de temps en temps)
0
Salut KX ,

c'est moi tu m'as déjà aidé dans l'action du bouton : (http://www.commentcamarche.net/forum/affich-25114880-action-bouton-java), et comme je t'ai déjà expliqué dans la question précedente je vais charger une seule ligne à la fois, si y a des modifications à faire je les effectue dans le JTextArea puis le resultat sera sauvegardé dans texte.txt
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
9 mai 2012 à 13:05
Dans ce cas, c'est un peu plus compliqué, car on ne peut pas en Java modifier juste une ligne, il faudrait relire et réécrire tout le fichier à chaque fois !
Cependant, tu peux envisager de créer un fichier temporaire, qui écrit les champs modifiés au fur et à mesure qu'ils sont lus dans le fichier original, puis une fois le fichier terminé (ou le programme arrêté), écraser le fichier original...
0
oui bonne idée je vais essayer de le faire , merci KX :)) , juste une chose le fichier temporarire va contenir uniquement les phrases modifiées !? dans ce cas là lorsque j'ecrase l'ancienne version du fichier je vais perdre les phrases non modifiées non ??
0
J'ai trouvé que pour rajouter une action à un JTextArea il faut faire ca :
myArea.getDocument().addDocumentListener(myListener); Cependant je ne comprends pas deux chose :
1.le compilateur n'accepte pas addDocumentListener(myListener) il me dit : No enclosing instance of type DocumentEventDemo is accessible. Must qualify the allocation with an enclosing instance of type DocumentEventDemo (e.g. x.new A() where x is an instance of DocumentEventDemo). je ne comprends pas ce que cela veut dire !!
2.comment je dois écrire myListener ??
j'arrive pas à trouver des exemples simples d'une utilisation de DocumentListener.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
9 mai 2012 à 18:35
Je pense qu'il y a plus simple, en fait j'ai confondu TextArea sur laquelle on peut faire un addTextListener, et JTextArea, qui s'utilise plutôt avec addKeyListener, c'est à dire que l'action n'est pas lancé lorsque le texte change (y compris automatiquement), mais lorsque l'on appuie sur une touche (uniquement par l'utilisateur), ce qui rend les choses à un peu plus simple.

final JTextArea myArea = new JTextArea();

myArea.addKeyListener(new KeyListener()
{
	public void keyPressed(KeyEvent e) {}
	public void keyTyped(KeyEvent e) {}
	
	public void keyReleased(KeyEvent e)
	{
		String s = myArea.getText();
		enregistrer(s); // enregistrer dans le fichier
	}
});
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
9 mai 2012 à 18:54
Cependant, cela n'a plus trop d'intérêt si on utilise un deuxième fichier, et en lisant ligne par ligne.
On n'aura qu'à juste enregistrer la ligne dans le fichier telle qu'elle est dans le JTextArea, et ce au moment où l'on lit la ligne suivante dans le fichier d'origine.

Étapes :
1) lire une ligne dans le fichier d'origine
2) afficher la ligne dans le JTextArea
3) modification (ou non) de la ligne par l'utilisateur
4) enregistrement de la ligne
5) retour en 1
0