Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2725 connectés 

  FORUM HardWare.fr
  Programmation
  C

  effacer le début d'un fichier en evitant une recopie ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

effacer le début d'un fichier en evitant une recopie ?

n°644844
blackgodde​ss
vive le troll !
Posté le 17-02-2004 à 01:01:51  profilanswer
 

bonjour,
 
dans le cadre de la limitation de la taille d'un fichier de logs, je voudrais donc si la taille maximum du fichier vient a être dépassé mettre les nouvelles lignes a ajouter dans le fichier à la fin du fichier, et effacer les 1eres lignes du fichier. Cela sans mapper tout le fichier en mémoire, ni en copiant le fichier ...
 
La seule solution que j'ai trouvée est de diviser le contenu fichier en bloc, et de copier chaque bloc un emplacement plus haut : le bloc 2 ecrase le bloc 1, le bloc 3 ecrase le bloc 2, etc ...
 
existe-t-il une méthode plus appropriée ?


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 17-02-2004 à 01:01:51  profilanswer
 

n°646135
Taz
bisounours-codeur
Posté le 17-02-2004 à 23:00:46  profilanswer
 

non

n°646417
HelloWorld
Salut tout le monde!
Posté le 18-02-2004 à 03:03:36  profilanswer
 

Utilie un fichier circulaire.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°646542
Taz
bisounours-codeur
Posté le 18-02-2004 à 10:23:53  profilanswer
 

HelloWorld a écrit :

Utilie un fichier circulaire.

:heink:

n°646658
art_dupond
je suis neuneu... oui oui !!
Posté le 18-02-2004 à 10:51:55  profilanswer
 

taz>ca veut dire "rond"  :o


---------------
oui oui
n°646681
Taz
bisounours-codeur
Posté le 18-02-2004 à 10:57:32  profilanswer
 

art_dupond a écrit :

taz>ca veut dire "rond"  :o  

:??:

n°646694
art_dupond
je suis neuneu... oui oui !!
Posté le 18-02-2004 à 11:00:32  profilanswer
 

> circulaire
(adjectif et nom féminin)
En forme de cercle.? Qui décrit un cercle.? Orbite circulaire: orbite képlérienne de rayon vecteur constant.? Pratiquement, orbite elliptique d'excentricité très faible.? (Anglais: circular orbit).? [nom féminin] Lettre circulaire ou circulaire: lettre adressée à plusieurs personnes à la fois.
 
> rond,e
(adjectif)
Qui est de forme circulaire ou sphérique.? Arrondi.? Petit et corpulent.? Potelé et rebondi.? [familier] Ivre.? Se dit d'un nombre entier, sans fraction: compte rond.? Sans façon, franc: homme rond en affaires.? [adv.] Tourner rond.


Message édité par art_dupond le 18-02-2004 à 11:01:13

---------------
oui oui
n°646700
Taz
bisounours-codeur
Posté le 18-02-2004 à 11:01:50  profilanswer
 

tu peux t'expliquer au lieu de faire le con ? j'ai jamais entendu parler de ça :o

n°646704
art_dupond
je suis neuneu... oui oui !!
Posté le 18-02-2004 à 11:03:50  profilanswer
 

ben j'essayais juste de t'aider en expliquant le mot circulaire. J'en sais pas plus mais j'essaye de faire avancer le schmilblick, stou :o


---------------
oui oui
n°646707
Taz
bisounours-codeur
Posté le 18-02-2004 à 11:05:47  profilanswer
 

bon alors je conclue ton intervention
 
ta gueule :o
un fichier rond/circulaire ça n'existe pas

mood
Publicité
Posté le 18-02-2004 à 11:05:47  profilanswer
 

n°646719
art_dupond
je suis neuneu... oui oui !!
Posté le 18-02-2004 à 11:09:39  profilanswer
 

Peut etre que c'est un fichier binaire qui remplit un cylindre sur le disque et qu'on pourrait lire à partir de n'importe ou.
C'est pit etre une connerie mais le fichier est alors bien circulaire non ?
 
 
 
 :hello:


Message édité par art_dupond le 18-02-2004 à 11:09:57

---------------
oui oui
n°646729
Taz
bisounours-codeur
Posté le 18-02-2004 à 11:14:27  profilanswer
 

n'importe quoi ... mais alors vraiment ... tant qu'à faire on a qu'a nommer le fichier avec un palindrome comme ça on pourra le lire dans les deux sens ?
 
et puis c'est encore plus n'importe quoi, parce que tu retombes dans le cas problématique d'expligue BG, à savoir qu'en réécrivant à partir du début, tu écrases de manière incohérente le contenu du fichier

n°646734
art_dupond
je suis neuneu... oui oui !!
Posté le 18-02-2004 à 11:15:33  profilanswer
 

arf :p
 
 
 
ps: cette fois j'y go vraiment ;)
 
 
 
 :hello:


Message édité par art_dupond le 18-02-2004 à 11:15:51

---------------
oui oui
n°646763
art_dupond
je suis neuneu... oui oui !!
Posté le 18-02-2004 à 11:28:18  profilanswer
 

BlackGoddess a écrit :

bonjour,
 
dans le cadre de la limitation de la taille d'un fichier de logs, je voudrais donc si la taille maximum du fichier vient a être dépassé mettre les nouvelles lignes a ajouter dans le fichier à la fin du fichier, et effacer les 1eres lignes du fichier. Cela sans mapper tout le fichier en mémoire, ni en copiant le fichier ...
 
La seule solution que j'ai trouvée est de diviser le contenu fichier en bloc, et de copier chaque bloc un emplacement plus haut : le bloc 2 ecrase le bloc 1, le bloc 3 ecrase le bloc 2, etc ...
 
existe-t-il une méthode plus appropriée ?


 
tu ne pourrais pas écrire tes nouveaux blocs en début de fichier si la limite est dépassée et garder un "pointeur sur le 'vrai' début du fichier" quelque part (par exemple sur la première ligne du fichier) qui te permettrait de resortir le fichier "dans l'ordre" quand t'as besoin de le consulter ?


Message édité par art_dupond le 18-02-2004 à 11:30:23

---------------
oui oui
n°646876
gilou
Modérateur
Modzilla
Posté le 18-02-2004 à 12:37:03  profilanswer
 

Ta methode est bonne et efficace tant que tu exploites ton fichier de log de maniere interne a ton outil.
Mais si tu veux utiliser ton fichier de log comme un fichier texte ordinaire exploité par des outils externes, sa solution (division du fichier et remontée par blocs) me semble astucieuse et bonne.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°647436
blackgodde​ss
vive le troll !
Posté le 18-02-2004 à 16:54:46  profilanswer
 

ah, oui, merci pour ces réponses, en effet la solution du fichier ciruclaire me parait bien quand la limite est élevée, ca evite de recopier presque tout le fichier a chaque nouvelle ligne de logs :)


---------------
-( BlackGoddess )-
n°647783
HelloWorld
Salut tout le monde!
Posté le 18-02-2004 à 21:34:03  profilanswer
 

Ben un fichier circulaire...il revient au debut comme pour un buffer circulaire par ex. C'est classique dans les fic de log.
Faut stocker la date + heure en + au début c'est tout. Faut aussi définir une longueur fixe de ligne (par ex 80), mais rien n'empêche d'enregistrer sur plusieurs lignes. Tu limites à XXX lignes (=> taille) ou alors par période (24h de log). Une fois la fin définie du fichier, on repart au début et écrase les lignes les + vieilles. Ca fait une rotation, c'est circulaire. C'est tout con comme principe.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°647954
gilou
Modérateur
Modzilla
Posté le 18-02-2004 à 23:14:18  profilanswer
 

> C'est classique dans les fic de log.  
 
Les fichiers de log unix que je connaisse ont toujours ete ordonnés lorsque je les regardais en mode texte sous emacs, sans que j'aie besoin d'aller au milieu du fichier pour voir ou ils demarraient. Bon, sur que sous unix, la taille etait pas limitée en general, par contre, y'avait souvent une rotation entre qques fichiers de logs successifs (1 par jour de la semaine??) ce qui reproduisait sous certains aspects cette notion de circularité.
 
A+,


Message édité par gilou le 18-02-2004 à 23:21:19

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°648069
Taz
bisounours-codeur
Posté le 19-02-2004 à 00:33:56  profilanswer
 

sauf que c'est un script qui manipule des fichiers, qui garde les N plus récents seulement

n°648150
HelloWorld
Salut tout le monde!
Posté le 19-02-2004 à 08:58:25  profilanswer
 

logrotate, ça sert à quoi ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  effacer le début d'un fichier en evitant une recopie ?

 

Sujets relatifs
Réaliser un fichier zip et l'envoyerenvoyer un fichier autre que les .txt avec les socket
Fichier Flash en réseau[Perl] Fichier, dossier ou lien?
Compression d'un ensemble de fichierlecture d'un fichier bmp en c
ouvrir un fichierExtraire le contenu binaire d'un fichier vers une chaine de caracteres
Récupérer, en partie, des données provenant d'un fichier texte[PYTHON] Comment faire pour supprimer un fichier ?
Plus de sujets relatifs à : effacer le début d'un fichier en evitant une recopie ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR