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 :

Comment trouver la dernière ligne ajoutée a un fichier ?


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Par défaut Comment trouver la dernière ligne ajoutée a un fichier ?
    Bonjours

    J'ai donc un fichier qui est lu et stoquer dans un tableau (ligne par ligne). je connai donc le nombre de ligne.

    Inotify (api) m'informe quand ce fichier change, je veux donc juste obtenir les modification depuis la dernière position .

    je pourrait relire le fichier compter le nombre de ligne et reprendre depuis le total du nombre ligne précédente.

    Seulement je lis le fichier depuis le début si le fichier est grand ou meme depuis la fin si l'ajous est grand sa va pas être terrible en perf ..... une idée ?

    je précise que je suis sous linux , debian

  2. #2
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Salut,

    Si tu retiens la taille du fichier après chaque changement, tu peux facilement retrouver le début de la dernière insertion, non ?

  3. #3
    Membre émérite Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Par défaut
    Les modifications se font n'importe où dans le document ou juste en ajout à la fin du document ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Par défaut
    Citation Envoyé par MythOnirie Voir le message
    Les modifications se font n'importe où dans le document ou juste en ajout à la fin du document ?
    Merci pour ta réponse
    R: Juste en ajout a la fin du document

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Par défaut
    Citation Envoyé par Trademark Voir le message
    Salut,

    Si tu retiens la taille du fichier après chaque changement, tu px facilement retrouver le début de la dernière insertion, non ?
    je veux bien mai je fait cela avec quoi ?

    voici comment je lit le 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
    17
    18
    19
    20
    21
    22
    23
    24
     
    cTableaux cMyFile::lire_fichier_par_ligne(const std::string &path_file){
    	// le constructeur de ifstream permet d'ouvrir un fichier en lecture
        std::ifstream fichier(path_file.c_str());
    	cTableaux cTLecture(1, std::string("string"));
     
        if (fichier != 0) // ce test échoue si le fichier n'est pas ouvert
        {
            std::string ligne; // variable contenant chaque ligne lue
            // cette boucle s'arrête dès qu'une erreur de lecture survient
            while ( std::getline( fichier, ligne ) )
            {
    			cTLecture.SetInsert(0, ligne);
            }
     
        }
    	else
    	{
    		std::cout << "ERREUR : impossible de lire dans le fichier " << path_file << " Valeur de l'objet " << fichier << std::endl;
    		sleep (5);
        }
        fichier.close();
    	return cTLecture;
    }

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    tu lis le fichier ligne par ligne et souhaites savoir quelle était la dernière ?
    Et bien c'est fort simple, tu les lis ces lignes, il te suffit de savoir quelle était la dernière correctement lue... et de la sauvegarder au fur et à mesure qu'elle évolue

    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
    std::ifstream fichier(path_file.c_str());
    	cTableaux cTLecture(1, std::string("string"));
     std::string lastLine;
        if (fichier != 0) // ce test échoue si le fichier n'est pas ouvert
        {
            std::string ligne; // variable contenant chaque ligne lue
            // cette boucle s'arrête dès qu'une erreur de lecture survient
            while ( std::getline( fichier, ligne ) )
            {
                            lastLine = ligne;
    			cTLecture.SetInsert(0, ligne);
            }
     
        }
    	else
    	{
    		std::cout << "ERREUR : impossible de lire dans le fichier " << path_file << " Valeur de l'objet " << fichier << std::endl;
    		sleep (5);
        }
    std::cout<<"dernière ligne : "<<lastLine<<std::endl;
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 412
    Par défaut
    Merci pour les réponse je vais tester cela

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/01/2011, 13h06
  2. Comment trouver la dernière ligne de mon tableau?
    Par thenico35 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/03/2009, 14h35
  3. Réponses: 4
    Dernier message: 15/06/2006, 13h31
  4. [VBA-E]comment trouver la dernière ligne contenan
    Par couscoussier dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/03/2006, 16h53
  5. [JList] rendre visible la dernière ligne ajoutée
    Par Mille sabords dans le forum Composants
    Réponses: 3
    Dernier message: 12/04/2005, 10h32

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