Suppressions de lignes au millieu d'un fichier.

Le
Pim
Bonjour tous,

Je possède un fichier texte de données simple avec des mots clés
délimittant une antité représantant un objet.

Je souhaite que mon fichier reste lisible pour un humain.

il se présente en gros comme suit:

etiquette_début : id1
prop1 = 2
prop2 = 1
prop3 =
prop_etc..
DébutCommentaire
Ceci est un commentaire à longueur variable
Fin commentaire
etiquette_fin

etiquette_début : id2
prop1 = 19
prop2 = 21
prop3 =
prop_etc
DébutCommentaire
Ceci est un autre commentaire à longueur variable
Fin commentaire
etiquette_fin

Bon c'est très simple.


Le fichier peut-être très gros.

Il faut donc que je "charge" chaque structure et que j'indexe
la position octet de etiquette_début dans le fichier
afin de pouvoir supprimer ou modifier une antitée
(de étiquette_début à étiquette_fin) par la suite.

Aussi, Je ne souhaite PAS utiliser plusieur descripteurs de fichiers sur
le même fichier car toutes mes ressources doivent
être optimisées, de plus je suis persuadé qu'un seul descripteur
peut tout faire.
(Descripteur, enfin je veut dire un Reader ou un Writer selon le cas si
vous préférez)

Le problème n'est pas de savoir comment faire cela je l'ai déja
fait en C,Perl et d'autres langages.
Mais dans tous les gestionnaires Reader,Writer de Java, je suis
perdu.
De plus pour récupérer une position, je ne vois que
le randomaccess qui me le permet apparemment, alors que ce
type de Reader ne me convient guère pour mon fichier que
je préfèrerais lire en mode ligne avec un BufferedReader
et readLine(), mais dans ce mode, je ne voit pas de moyen
de calculer la position (à part mesurer mes chaines),
ce qui est surement source d'erreur avec les retours chariots,
et la portabilité, etc
Pourrier-vous m'éclaircir la situation afin de m'aider à y voir
plus clair sur la stratégie à adopter.
Je vous remercie par avance.
Pim.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
TestMan
Le #227636
Bonjour tous,

Je possède un fichier texte de données simple avec des mots clés
délimittant une antité représantant un objet.

Je souhaite que mon fichier reste lisible pour un humain.

il se présente en gros comme suit:

etiquette_début : id1
prop1 = 2
prop2 = 1
prop3 = ...
prop_etc..
DébutCommentaire
Ceci est un commentaire à longueur variable
Fin commentaire
etiquette_fin

Il faut donc que je "charge" chaque structure et que j'indexe
la position octet de etiquette_début dans le fichier
afin de pouvoir supprimer ou modifier une antitée
(de étiquette_début à étiquette_fin) par la suite.


De plus pour récupérer une position, je ne vois que
le randomaccess qui me le permet apparemment, alors que ce
type de Reader ne me convient guère pour mon fichier que
je préfèrerais lire en mode ligne avec un BufferedReader
et readLine(), mais dans ce mode, je ne voit pas de moyen
de calculer la position (à part mesurer mes chaines),
ce qui est surement source d'erreur avec les retours chariots,
et la portabilité, etc...
Pourrier-vous m'éclaircir la situation afin de m'aider à y voir
plus clair sur la stratégie à adopter.
Je vous remercie par avance.
Pim.



Bonjour,

java.util.Properties vaut le détour, si vous n'êtes bloqué par votre
format bas niveau. Ou encore le

Vous pouvez en complement utilisé la technique utiliser dans les
fichiers de met-informations qui consiste à lister les identifiants des
elements puis à récuperer les sous-elements correspondants. En clair :

Objet-Nom=Truc
Objet-Famile=la7
Objet-Proprietes=1,2,toto
Propriete-1=blahbla1
Propriete-2=blahbla2
Propriete-toto=blurp sdflkjsfd
...

Dans ces cas, la clé pour accéder aux valeurs des propriétés et
déterminée à partir de la liste (issue de la clé Objet-Proprietes)
concaténée avec le suffixe "Propriete-"

Pas sûr d'être vraiment clair à cette heure :(

A+
TM

Pim
Le #228232
Le Thu, 03 May 2007 01:32:47 +0200,
TestMan
Bonjour tous,

Je possède un fichier texte de données simple avec des mots clés
délimittant une antité représantant un objet.

Je souhaite que mon fichier reste lisible pour un humain.

[ .... ]



Bonjour,

java.util.Properties vaut le détour, si vous n'êtes bloqué par votre
format bas niveau. Ou encore le

Vous pouvez en complement utilisé la technique utiliser dans les
fichiers de met-informations qui consiste à lister les identifiants des
elements puis à récuperer les sous-elements correspondants. En clair :

Objet-Nom=Truc
Objet-Famile=la7
Objet-Proprietes=1,2,toto
Propriete-1=blahbla1
Propriete-2=blahbla2
Propriete-toto=blurp sdflkjsfd
...

Dans ces cas, la clé pour accéder aux valeurs des propriétés et
déterminée à partir de la liste (issue de la clé Objet-Proprietes)
concaténée avec le suffixe "Propriete-"

Pas sûr d'être vraiment clair à cette heure :(

A+
TM


Heu tu est peut-être clair mais comme ça je ne comprend pas
et j'ai pas l'impression que tu ai compris ce que je veut,
mais je me suis peut-être mal exprimé.

En fait on peut le prendre autrement:
Ce que je souhaite c'est de pouvoir faire des seek (déplacement) et
des mesures de positions, hors ça ne se fait qu'en mode random
accès apparemment.
Et donc au départ j'avais pas ouvert le fichier en mode aléatoire mais
avec un BufferedReader Classique.
De plus je souhaite récurser dans mon fichier en mode lecture de ligne
(readline)
Hors j'avais pas vu que l'objet RandomAccessFile comprend aussi une
méthode readLine, donc c'est bon, le problème est résolut.
Merci toutefois.


Publicité
Poster une réponse
Anonyme