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 :

Récuperer la date de modification d'un fichier


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut Récuperer la date de modification d'un fichier
    Bonjour

    j'aimerai savoir s'il y a un moyen de récupérer la date de derniere modification d'un fichier

    Ou d'un maniere générale, regarder si un fichier a été modifié depuis la derniere exécution de mon programme?

    Merci bien

  2. #2
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut Re: Récuperer la date de modification d'un fichier
    Citation Envoyé par Neo82
    Bonjour

    j'aimerai savoir s'il y a un moyen de récupérer la date de derniere modification d'un fichier

    Ou d'un maniere générale, regarder si un fichier a été modifié depuis la derniere exécution de mon programme?

    Merci bien
    De facon standard, non.

    Mais si tu utilises des fonctions POSIX comme stat, tu recuperes une struct stat qui ressemble à cela:
    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
     
    struct stat {
                      dev_t         st_dev;      /* Périphérique                */
                      ino_t         st_ino;      /* Numéro i-noeud              */
                      mode_t        st_mode;     /* Protection                  */
                      nlink_t       st_nlink;    /* Nb liens matériels          */
                      uid_t         st_uid;      /* UID propriétaire            */
                      gid_t         st_gid;      /* GID propriétaire            */
                      dev_t         st_rdev;     /* Type périphérique           */
                      off_t         st_size;     /* Taille totale en octets     */
                      blksize_t     st_blksize;  /* Taille de bloc pour E/S     */
                      blkcnt_t      st_blocks;   /* Nombre de blocs alloués     */
                      time_t        st_atime;    /* Heure dernier accès         */
                      time_t        st_mtime;    /* Heure dernière modification */
                      time_t        st_ctime;    /* Heure dernier changement    */
                  };
    Les trois derniers champs devraient te convenir, non ?
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  3. #3
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Salut.

    Et pour un programme Windows tu peux utiliser la fonction Win32 suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BOOL GetFileTime(HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime);
    ... Qui, également, s'autocommente
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut
    La premiere solution me convient mieux car j'utilise Linux, ou Mac OS X

    Merci beaucoup je vais voir ce que je peux faire avec ca mais je sens que c'est tout a fait ce qu'il me fallait

    Merci bcp!! :)

    @+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut
    Juste une petite précision....

    Quelle est la différence entre derniere modification et dernier changement?

    Merci

  6. #6
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Salut !

    Je ne suis pas sûr, mais 'dernier changement' doit être en fait 'date de création'...
    Sinon ça n'a aucun sens...
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut
    C'est bien ce qu'il me semble.. je ne vois pas l'interet de mettre de variables si c'est pour dire la meme chose

    Mais c'est curieux que la date de création soit appelée "dernier changement"

    Non??

  8. #8
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Moi j'ai trouvé cette description :
    Le champ st_atime est modifié par les accès au fichier,
    c'est à dire avec exec(2), mknod(2), pipe(2), utime(2) et
    read(2) (d'au moins un octet). D'autres routines, comme
    mmap(2), peuvent ou non mettre à jour ce champ st_atime.

    Le champ st_mtime est modifié par des changements sur le
    fichier lui-même, c'est à dire mknod(2), truncate(2),
    utime(2) et write(2) (d'au moins un octet). D'autre part
    le champ st_mtime d'un répertoire est modifié lors de la
    création ou la suppression de fichiers en son sein. Le
    champ st_mtime n'est généralement pas mis à jour lors de
    modification de propriétaire, groupe, mode ou nombre de
    liens physiques.

    Le champ st_ctime est modifié lors d'une écriture, une
    lecture, ou une modification de données concernant l'i-
    noeud (propriétaire, groupe, mode, etc...)
    Mais je ne sais pas ce qu'elle vaut.
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  9. #9
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Citation Envoyé par Neo82
    Juste une petite précision....

    Quelle est la différence entre derniere modification et dernier changement?

    Merci
    Un coup d'oeil au man .....
    Le champ st_atime est modifié par les accès au fichier, c'est à dire avec exec(2), mknod(2), pipe(2), utime(2) et read(2) (d'au
    moins un octet). D'autres routines, comme mmap(2), peuvent ou non mettre à jour ce champ st_atime.

    Le champ st_mtime est modifié par des changements sur le fichier lui-même, c'est à dire mknod(2), truncate(2), utime(2) et write(2)
    (d'au moins un octet). D'autre part le champ st_mtime d'un répertoire est modifié lors de la création ou la suppression de fichiers
    en son sein. Le champ st_mtime n'est généralement pas mis à jour lors de modification de propriétaire, groupe, mode ou nombre de
    liens physiques.

    Le champ st_ctime est modifié lors d'une écriture, une lecture, ou une modification de données concernant l'i-noeud (propriétaire,
    groupe, mode, etc...)
    <edit>
    Arf, rolkA
    </edit>
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut
    Ok merci bien pour ces précisions...

    Si tu les a trouvé c'est surement qu'elles sont valables :)

    Je vais essayer de voir ce que ca donne pour voir en quelles occasions les differentes variables sont modifiées

    @++

  11. #11
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par Pouic
    <edit>
    Arf, rolkA
    </edit>
    Au moins avec ton man, on sait que la source est fiable (la mienne venait d'une brève recherche sur le net )...
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut
    lol, mon man est en anglais... dc je n'avais pas tout compris, c'est pour ca que je posais la question :)

    Merci bien a vous tous

    @+

  13. #13
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Je crois que c'est résolu, un petit clique en bas à gauche pour une bonne lisibilité du forum serait top merci

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut
    Hmmm....

    Non en fait c'est pas résolu .. LOL

    comment fait on pour comparer deux variables de type t_time?

    Merci bcp

    PS: apres promis je met le tag résolu :)

    @++

  15. #15
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Avec ==, <=, >= ......
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut
    Ah tout simplement??

    ok je vais essayer

    Merci beaucoup a tout le monde :)

    @+

  17. #17
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    En fait tu peux utiliser difftime (je pensais que ce n'était pas portable):

    Header File
    time.h

    Prototype
    double difftime(time_t time2, time_t time1);

    Description
    Computes the difference between two times.
    difftime calculates the elapsed time in seconds, from time1 to time2.
    C'est sans doute mieux, car rien n'indique que >=, = etc soient définis pour time_t (chez moi time_t est un long mais çà dépend des plate-formes)... Par contre, avec un double, tu fais ce que tu veux
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut
    Ok merci ...

    par contre j'ai un petit probleme...

    quand je lance la fonction stat, ca amrche nickel, mais apres quand je veux acceder au champ st_mtime (celui qui m'interesse) ca me sort "Bus error" à l'execution, alors que je n'ai aucune erreur à la compilation

    Merci

    Pour info, voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    struct stat *File_Status;
    time_t Date;
    stat("test", File_Status);
    Date = File_Status -> st_mtime;
    Ca merde a la derniere ligne...

    Merci[/code]

  19. #19
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Si je ne m'abuse, stat n'alloue pas de mémoire, c'est toi de le faire. Là tu as défini un pointeur que tu lui envoies, c'est tout. Il faut lui envoyer l'adresse d'une structure existante.
    Essaye plutôt çà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct stat File_Status;
    time_t Date;
    stat("test", &File_Status);
    Date = File_Status.st_mtime;
    A+
    Un historique local pour Visual Studio 2005 et 2008 :
    http://www.codeplex.com/VLH2005

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 121
    Points
    121
    Par défaut
    AAAhhhhhhh

    je pensais que ca allouait la mémoire....

    bon je vais réessayer alors...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. comment récuperer la date de modification d'un fichier avec FOPEN ?
    Par Frantz69 dans le forum Bibliothèque standard
    Réponses: 8
    Dernier message: 05/02/2009, 09h13
  2. Changer la date de modification d'un fichier
    Par sylviev dans le forum Langage
    Réponses: 1
    Dernier message: 07/08/2007, 09h58
  3. [FTP] date dernière modif d'1 fichier distant
    Par renaudjuif dans le forum Langage
    Réponses: 1
    Dernier message: 24/09/2006, 01h24
  4. Comment trouver la dernière date de modification d'un fichier
    Par je®ome dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 24/05/2006, 13h23
  5. [langage] Date de modification d'un fichier
    Par Cyspak dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2003, 15h49

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