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 habitué
    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
    Points : 149
    Points
    149
    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 expérimenté 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
    Points : 1 396
    Points
    1 396
    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 éclairé 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 : 35
    Localisation : France, Puy de Dôme (Auvergne)

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

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

  4. #4
    Membre habitué
    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
    Points : 149
    Points
    149
    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 habitué
    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
    Points : 149
    Points
    149
    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 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 128
    Points : 33 042
    Points
    33 042
    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;

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705

  8. #8
    Membre habitué
    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
    Points : 149
    Points
    149
    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