bjr
est ce que quelqu'un peut me montrer comment on fait pour supprimer un object d'un fichier
j'ai ajouter les methodes ajouter etc ...
mais je ne trouve pas la solution pour supprimer l'objet
Merci
bjr
est ce que quelqu'un peut me montrer comment on fait pour supprimer un object d'un fichier
j'ai ajouter les methodes ajouter etc ...
mais je ne trouve pas la solution pour supprimer l'objet
Merci
Que veux tu dire par "supprimer un objet d'un fichier" ???
je veux créer des procédures de mise à jour du fichier à savoir ajouter un objet le supprimer l'afficher etc...
persistence
l'creaser , l'enlever du fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 import java.io.*; class serial{ public void ajouter(Object o)throws IOException{ ObjectOutputStream fos=new ObjectOutputStream(new FileOutputStream("doc.obj")); fos.writeObject(fos); fos.close(); } public void supprimer(Object o){ //aucune idée du code } }
Avec ça, on va pas avancer
Peux tu préciser le format du fichier (XML, binaire, texte) et comment sont stockés tes objets (s'il s'agit bien d'objets java serialisés) ?
Désolé, j'avais pas vu le code joint.
Pour avoir une persistance élaborée, tu peux utiliser une base de données plutôt que des fichiers.
Sinon, il faut structurer ton fichiers de sortie (genre donner la même taille sur la fichier à chaque objet enregistrer) et utiliser RandomAccessFile par exemple.
pouvez-vous me donner un petit exemple(Fichier) parce que je suis un debutant![]()
Une classe de type :
Par contre, cela implique que tes objets aient une taille maximum (définie par tailleObjet ici) et il faut définir un code (String) pour un objet null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 class serial{ public int tailleObjet; public int ajouter(Object o)throws IOException{ RandomAccessFile f = new RandomAccessFile("doc.obj", "rw"); int indice = 0; while (getObject(f, indice) == null) { indice++; } f.write(objectToString(o), indice* tailleObjet, tailleObjet); f.close(); return indice; } public Object supprimer(int indice) { RandomAccessFile f = new RandomAccessFile("doc.obj", "rw"); Object ret = getObject(RandomAccessFile f, indice); byte[] b = objectToString(null); f.write(b, indice* tailleObjet, tailleObjet); } public Object getObject(RandomAccessFile f, int indice) { byte[] b = new byte[tailleObjet]; f.readFully( b, indice*tailleObjet, tailleObjet); return this.StringToObject(b); } /** * Transforme un objet en byte[]. **/ private byte[] objectToString(Object o) { byte[] b = new byte[tailleObjet]; ... return b; } private Object StringToObject(byte[] b) { ... return object; } }
De plus, l'effacement s'effectue par indice plutôt que par Objet.
Voilà, j'ai pas mieux, sauf à utiliser une base de données.
Partager