Bonjour,
J'aimerais savoir s'il est posible de lire un fichier ligne à ligne mais en partant de la fin du fichier ?
Ou alors un moyen d'inverser le fichier et apres effectuer un parcours normal ?
Merci
Bonjour,
J'aimerais savoir s'il est posible de lire un fichier ligne à ligne mais en partant de la fin du fichier ?
Ou alors un moyen d'inverser le fichier et apres effectuer un parcours normal ?
Merci
Pourquoi ne pas parcourir ton fichier en stockant les données dans un tableau, puis parcourir ce tableau de la fin au début, en réécrivant celui ci dans un fichier secondaire (si tu veux le réecrire évidemment) ou en l'affichant.Envoyé par spip68
Sinon, étant débutant comme toi, de mon savoir (limité) je ne pense pas qu'on sache lire une fichier séquentiel à l'envers.
Parce que je lis des fichers de plusieurs centaines de Mo et donc ça ne tiendra jamais dans un tableau niveau mémoire.Envoyé par Lau.c
ben tu peux lire ton fichier morceau par morceau, tu choisi la taille de ton tableau (fixe) tu lis ton fichier depuis : taille_du_fichier - tableau.length * numero_du_block.
Tu inverse le tableau et tu effectue tes traitements, puis tu relis en incrémentant le numéro du block.
Ca marche a condition que tu ne doive pas utiliser tt le contenu du fichier en meme temps...
oui mais la je suis coincé avec la taille du tableau.Envoyé par Kh4iN3
Il me faut une lecture ligne à ligne. Donc il n'y a pas de constante "tableau_length" qui me ferait remonter précidement à un debut de ligne. d'autant que les lignes sont indépendantes et de longueurs variables.
oui mais tu peux faire un tableau de ligne que tu remplis avec un readLine, tu fait autant de readLine que la taille du tableau.
c'est moi qui comprend peut etre pas tres bien alors ...
imaginons pour le premier bloc. On va dire la taille du tableau à 10.
Je pars de la fin du fichier . Comment je fais pour remonter et me placer exactement 10lignes au dessus dans le fichier pour ensuite faire mes 10 readline à stocker dans le tableau?
Bonsoir,
Je ne crois pas qu'il y ai un moyen de lire un fichier à l'envers (en tout cas j'ai jamais vu ça), par contre, si tu exprimais le pourquoi du comment de ton besoin, on pourrait peut-être trouver une solution alternative... C'est un fichier log, un historique ???
Non c'est un fichier chiffré. le chiffrement est dynamique et utilse N lignes suivantes pour chiffrer la ligne courante.Envoyé par yusherboy
Donc la pour le dechiffrement , j'aurais besoin de partir de la fin du fichier pour faire l'opération inverse ...
Quand tu dis les N lignes suivantes, c'est quand même pas toutes les lignes situéees après ??Envoyé par spip68
Non non on choisit la longueur de N en parametre du programmeEnvoyé par yusherboy
Mouaip c'est pas optimal tout de même.
VA faire un tour du coté du RandomAccessFile ça devrait être un peu plus sympathoche pour toi
Je connais pas le RandomAccessFile, je n'ai que rarement utilisé des fichiers, et ce n'etait que des petits fichiers.
Sinon, si j'ai bien tout compris :
- il suffirait d'instancier un String[N+1] (ou N est égal au chiffre passé en paramètre), et à chaque fois que tu lis une ligne, tu décales les éléments de ton tableau d'un cran vers le haut.
Ce qui fait qu'une fois à la fin de ton fichier, tu as dans ton String[0] la ligne à décrypter, et dans les indices suivants les lignes pour le décrypter.
Problème majeur (dans le sens de ce que dit sinok) : il faut recommencer le fichier depuis le début pour décrypter chaque ligne, et si tes fichiers font plusieurs centaines de Mo, ça risque d'être
while(reader.readLine()!=null)
{
over
}
long !!
Par contre, ya un truc que je pige pas, c'est comment sont cryptées les lignes qui n'ont pas N lignes derrière elles ?
La classe RandomAccessFile te permet de te déplacer de façon libre dans un fichier, par contre tu ne manipuleras pas directement des flux de caractères:
http://java.sun.com/javase/6/docs/ap...ccessFile.html
Merci, j'en avais profité pour y faire un saut.
Par contre, je suis pas sûr que ça resoudra vraiment le fait que les fichiers font plusieurs centaines de Mo ! Ca risque d'etre lourd quand même non ??
Je sais même pas si il existe des logiciels de cryptage pro qui puissent manier des fichiers d'une telle taille sans galerer !
Si tes fichiers sont très très gros, tu peux te baser sur le principe des fichiers séquentiels indexés :
Tu lis une première fois ton très très gros fichier ligne par ligne :
pour chaque ligne tu stockes dans un fichier temporaire l'offset de début de ligne via la méthode getFilePointer() de RandomAccessFile.
Maintenant, tu vas lire ton fichier temporaire en commançant par la fin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int numeroLigne=0 rafTemporaire.seek(rafTemporaire.length()-numeroLigne*tailleEnBytesDuTypeTeServantAStockerLesIndexes) typeTeServantAStockerLesIndexes offset=rafTemporaire.read(); rafGros.fichier.seek(offset); laLigneQueTuCherchais=rafGrosFichier.readLine();
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager