IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Reduction taille fichier


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut Reduction taille fichier
    Bonjour,
    Je cherche à limiter un fichier log dans une application. J'ai fait un objet logsystem qui me permet de logger des erreurs dans une application. Mais comme il se peut qu'il y ait beaucoup de logs, je voudrais limiter cette taille et ne garder que les x derniers kilos de mon fichier.
    J'ai fait une routine qui lit tous les byte dans un tableau et recopie les n derniers bytes dans un autre tableau, puis je réécris le fichier avec le nouveau tableau.
    Bon, tout ça c'est très bien, mais j'aurais voulu savoir s'il n'y avait pas un outil tout fait pour soit :
    - recopier les n derniers bytes d'un fichier vers un autre
    - recopier les n derniers items d'un tableau vers un autre.

    Ben voilà voilà...
    Alors, bonne journée à tous !!

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Si ton log tient dans un tableau tu pourrai utiliser un LinkedList qui permet d'ajouter des éléments à la tête et de supprimer ceux se situant à la queue assez simplement ...

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Moi perso je me suis moins embêter pour faire la même chose.
    J'ai tout simplement regarder la taille du fichier.
    S'il est supérieur à x ko (ou mo) je l'écrase, sinon je l'ouvre en append.

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Par défaut
    +1 pour la queue..

  5. #5
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Merci ced600, j'avais pensé aussi à détruire le disque dur...
    Non, je déconne...
    Ce que je voulais c'est garder les n derniers char.
    Merci Smyley, c'est une belle idée mais ça me semble un peu compliqué. Mais je retiens la LinkedList (conaissais pas), ça peut être bravement utile pour d'autres problèmes.
    Par contre j'ai trouvé un truc qui me plait pas mal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
          string buff;
     
          FileStream fs = new FileStream("c:\\temp\\Tests.log", FileMode.Open, FileAccess.Read);
          fs.Seek(fs.Length - 1024, SeekOrigin.Begin);
     
          StreamReader sr = new StreamReader(fs);
          buff = sr.ReadToEnd();
          sr.Close();
          fs.Close();
     
          StreamWriter sw = new StreamWriter("c:\\temp\\Tests.log", false, Encoding.Default);
          sw.Write(buff);
          sw.Close();
    ici, 1024 indique la taille que je veux garder.
    Je ne sais pas ce que vous en pensez...

  6. #6
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Le temps de traitement est le même qu'en passant par un tableau et en récrivant les derniers bytes.
    p'tite correction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fs.Seek(fs.Length - 1024, SeekOrigin.Begin);
    fs.Seek(1024, SeekOrigin.End);


    le code avec les tableaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      FileInfo fi;
      byte[] FileByteDest;
      byte[] FileByteSrc;
      FileByteDest = new byte[1024];
     
      FileByteSrc = File.ReadAllBytes(aFileName);
      for (i = 0; i < FileByteDest.Length; i++)
      {
        FileByteDest[i] = FileByteSrc[fi.Length - (1024) + i];
      }
      File.WriteAllBytes(aFileName, FileByteDest);

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Merci ced600, j'avais pensé aussi à détruire le disque dur...
    Non, je déconne...
    Je ne vois pas ce qu'il y avait d'invraissemblable dans ma suggestion !!!!

    Maintenant je n'avais pas compris que tu voulais à chaque fois conserver les dernier caractères.

    J'allais te proposer de faire un truc dans le genre de ce que tu as récupérer.
    Je pense que c pas mal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] reduction taille fichier volumineux apres macro
    Par be4real dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/03/2013, 11h55
  2. réduction taille fichier
    Par Bibouda dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 27/10/2005, 17h43
  3. Taille fichier smart upload
    Par Homer dans le forum ASP
    Réponses: 2
    Dernier message: 20/10/2005, 21h18
  4. Limiter taille fichier joint à un mail
    Par fdthierry dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 27/08/2004, 12h12
  5. [URL] taille fichier
    Par hocinema dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 09/07/2004, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo