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 :

[C#] Modification de la date de dernier accès après copie


Sujet :

C#

  1. #1
    Membre confirmé Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Par défaut [C#] Modification de la date de dernier accès après copie
    Bonjours à tous !

    Actuellement en période de stage, je suis l'un (pour ne pas dire le seul) vrai développeur du service info dans lequel je me trouve. Dans cette optique, on m'a confié la création d'un programme qui aura pour but d'archiver des fichiers depuis un disque H vers un disque I, en fonction de leur date de dernier accès.

    Au stade où j'en suis, j'arrive à récupérer tous les fichiers (des FileInfo pour être précis) que j'ai à traiter et à les stocker dans un ArrayList, à copier toute cette liste vers le bon répertoire.

    Là où ça devient problématique c'est que lors de la copie, la date de dernier accès des fichiers du disque I est réinitialisée à la date de l'opération.
    Or, on souhaiterai pouvoir supprimer les fichiers au bout d'un durée déterminée, tout en prenant en compte le temps passé dans H.

    L'idée était donc de sauver la date de dernier accès du fichier dans H (qui elle reste intacte) et de l'affecter à la propriété FileInfo.LastAccesTime du fichier dans I.

    Mais ça ne marche pas vraiment... Même en utilisant la méthode statique File.SetLastAccessTime(Strint path, DateTime lastAccesTime) d'ailleurs.

    En fait, j'arrive à modifier la date de création lors de la première exécution de ma méthode bac à sable mais pas la date de dernier accès.
    A la deuxième exécution, les deux dates sont modifiées, bien que, de façon totalement aléatoire, il arrive que la date de dernier accès ne soit pas modifiée.

    J'en suis arrivé à trois suppositions :

    1) Ca vient du fait que le fichier copié est encore en cache et donc que la date d'accès est modifiée après coup par windows.
    2) Un twoll vaudou m'a lancé un sort
    3) Je suis mauvais

    Pouvez vous m'aider? Merci !

    Voici mon code :

    Fonction bac à sable
    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
    25
    26
    27
     
    public void testerFonctionnalites()
            {            
                Console.WriteLine("\n~~~~~~~~~ Recherche (H) ~~~~~~~~~\n");
                this.rechercher();
                FileInfo monFichierTest = (FileInfo)mesFichiers[9];            
                Console.WriteLine("\n\n~~~~~~~~~ Sélection du fichier de Test ~~~~~~~~~\n");
                Console.WriteLine("Nom du fichier : {0} ", monFichierTest.FullName);
                String source = monFichierTest.FullName;
                String cible = Path.Combine(disqueArchive, monFichierTest.Name);
                Console.WriteLine("Lien du fichier source : {0}\n", source);
                Console.WriteLine("Lien du fichier cible : {0}\n", cible);            
     
                try
                {
                    Console.WriteLine("\n\n~~~~~~~~~ Copie de H vers I ~~~~~~~~~\n");
                    monFichierTest.CopyTo(cible);                                             
     
                    Console.WriteLine("\n\n~~~~~~~~~ 1ère Modification date dernier accès I ~~~~~~~~~\n");
                    changerDates(source, cible);
     
                }
                catch (IOException e)
                {
                    Console.WriteLine(e.Message);
                }          
            }
    Fonction changerDates
    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
     
     private void changerDates(String source, String copie)
            {            
                try
                {
                    FileInfo fichier1 = new FileInfo(copie);
                    FileInfo fichier2 = new FileInfo(source);
     
                    fichier1.Refresh();
                    fichier2.Refresh();                
     
                    fichier1.CreationTime = fichier2.CreationTime;
                    fichier1.LastAccessTime = fichier2.LastAccessTime;
                    Console.WriteLine("Nom du fichier : {0}", fichier1.FullName);
                    Console.WriteLine("Date de création : {0}", fichier1.CreationTime);
                    Console.WriteLine("Dernier accès : {0}", fichier1.LastAccessTime);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }   
            }

  2. #2
    Membre expérimenté
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Par défaut
    Bonjour,

    A tu essayé la méthode MoveTo() plutôt que CopyTo() ?
    Il me semble qu'elle ne change pas la date du dernier accès (a confirmer).

    Bonne continuation

  3. #3
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 667
    Par défaut
    Salut,

    j'ai fait ce petit test et les deux fichiers prennent exactement les mêmes infos , donc je ne sais pas trop d’où viens ton erreur (j'utilise File.Copy() ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            private void Copier(string fichierA, string fichierB)
            {       
                File.Copy(fichierA, fichierB);
                FileInfo fileA = new FileInfo(fichierA);
                FileInfo fileB = new FileInfo(fichierB);
     
                fileB.CreationTime = fileA.CreationTime;
                fileB.LastAccessTime = fileA.LastAccessTime;
                fileB.LastWriteTime = fileA.LastWriteTime;
            }
    Essaye avec ça , et dit moi si ça marche chez toi , chez moi ça fonctionne nickel.

  4. #4
    Membre confirmé Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Par défaut
    Merci pour vos réponses.

    Kyroon > Pour des problèmes de droits, on est obligé de faire une copie et non pas un MoveTo() (de cette façon, les droits appliqués sur les fichiers sont ceux du dossier parent de I, et non pas ceux de l'ancien).

    PixelJuice > Ca ne marche pas non plus, j'ai le même souci : la date de création est bien mise à jour mais pas la date de dernier accès

    Veux tu plus de précision, quelle qu'elle soit?

    Edit : En lançant un autre programme de bac à sable, j'arrive à retirer 3 ans sur la date de dernier accès, mais que sur certains de mes fichiers, pas tous.
    C'est vraiment étrange, parce qu'autant quand je fais au pas à pas des fois ça marche impec' autant des fois ça marche pas du tout.
    Ca fait 24h qu'on se casse la tête dessus et on n'avance pas.

    De plus, le serveur sur lequel je fais mes tests est configuré de façon à ce que j'ai tous les droits donc à priori ça ne viens pas de là...

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 86
    Par défaut
    Bonjour essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void MyCopy(string copyFromPath, string copyToPath)
        {
            var origin = new FileInfo(copyFromPath);
     
            origin.CopyTo(copyToPath, true);
     
            var dest = new FileInfo(copyToPath);
            dest.CreationTime = origin.CreationTime;
            dest.LastWriteTime = origin.LastWriteTime;
            dest.LastAccessTime = origin.LastAccessTime;
        }

  6. #6
    Membre confirmé Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Par défaut
    Hum... Ca ne marche pas non plus. Je rencontre le même souci.

    Pour donner un exemple chiffré, ça n'a marché que pour 2 fichiers sur 362...

    (J'utilise vos fonctions dans une boucle)

  7. #7
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 667
    Par défaut
    Je pense le problème est ailleurs , pourrais-tu montrer ta boucle ? Les 2 fichiers sont au début ou a la fin de la boucle ?

  8. #8
    Membre confirmé Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Par défaut
    Ladite boucle :
    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
     
    public void testerFonctionnalites()
    {   
        rechercher();
        foreach (FileInfo monFichier in mesFichiers)
        {               
            String source = monFichier.FullName;
            String cible = Path.Combine(disqueArchive, monFichier.Name);          
     
            try
            {
                MyCopy(source, cible);
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
    Rechercher()
    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
     
            public void rechercher()
            {
                //On lance la recherche pour chaque partage du disque H
                foreach (String unPartageService in partagesService)
                {
                    DirectoryInfo racine = new DirectoryInfo(disqueService + unPartageService);
     
                    //Si la racine est null alors le partage n'existe pas
                    //La recherche n'est donc pas effectuée
                    if (racine != null)
                    {
                        //Algo de recherche récursive trouvée sur la doc
                        parcourrir(racine);
                    }
                }
    Du coup, la fonction parcourir met chaque fichier trouvé dans l'ArrayList mesFichiers.
    Et il faut préciser que chaque partage correspond à un sous répertoire direct du disque Service/Archive

  9. #9
    Membre chevronné

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Par défaut
    Hello,

    Après avoir lu le fil de discussion et avoir effectué quelques essais simples sur ma machine (en Windows XP il est vrai ), j'ai l'impression que ton problème principal est que l'utilisation de la propriété LastAccessTime manque singulièrement de fiabilité.
    Par exemple, sous WinXP, le simple fait d'afficher les propriétés d'un fichier modifie sa date de dernier accès (mais uniquement si on ne l'a pas fait depuis "un certain temps"), la copie du fichier aussi ! En plus j'arrive à avoir une valeur différente entre la fenêtre de propriétés et la valeur récupérer en C#
    Je ne sais pas ce que tu comptes faire exactement comme programme, mais à ta place j'éviterais de me baser sur cette information ou tout du moins uniquement sur elle.

  10. #10
    Membre chevronné Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Par défaut
    Citation Envoyé par Parmifer Voir le message
    Hum... Ca ne marche pas non plus. Je rencontre le même souci.

    Pour donner un exemple chiffré, ça n'a marché que pour 2 fichiers sur 362...

    (J'utilise vos fonctions dans une boucle)
    Je confirme les différentes remarques concernant le côté très excentrique de la date de dernier accès dans Windows...
    Ayant été confronté à un problème du même genre, il m'a fallu me résoudre à gérer, à l'intérieur de mon programme, l'historique d'utilisation, de transfert, d'archivage et de suppression des fichiers.

    En passant par une structure style FileInfos customisée et une liste exportées brute en xml, j'ai donc obtenue une persistance des informations suffisante pour mon application.

  11. #11
    Membre confirmé Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Par défaut
    Merci pour ta participation plume13.

    Pour tout te dire, ça je le sais déjà. J'ai fais environ 200 tests depuis ces trois derniers jours, avec mon maitre de stage.
    Et c'est bien mon problème... Etant donné que le but du programme est d'archiver des fichiers qui n'ont pas eu d'accès depuis 3ans, je suis obligé de me baser là dessus. Si on en restait là, ça serait bon, mais on souhaite aussi pouvoir "nettoyer" notre archive.

    Je m'explique :
    Une fois un fichier conservé 3 ans sur H, je le copie sur I. A ce moment là, si je devais le garder, mettons 10 ans, il lui reste 7 ans à tirer sur I avant la suppression définitive. Or, comme nous l'avons vu, la copie nous empêche de se baser sur la date de dernier accès des fichiers sur I, d'où la nécessité de faire ce changement.

    Sinon, je suis arrivé à une "solution" (et j'utilise des guillemets parce que ça soulève un autre problème).

    En fait, il faut faire l'opération en trois temps :

    1) Chercher les fichiers sur H puis les copier. On pensera à associer une date de dernier accès avec le chemin du fichier copié dans un HashTab.
    2) Attendre un petit laps de temps (on choisi environ 30 sec mais on peut pousser à 1min pour plus de sécurité)
    3) Chercher les fichiers sur I et modifier la date de dernier accès grâce au HashMap qu'on a préparé en H.

    Le problème que ça soulève?

    Ben ça met une plombe, surtout que j'ai de grosses quantités de fichiers à traiter (Plusieurs dizaines de To, pour pas dire centaines)...

    Donc si personne n'a de solution d'ici demain soir, je marquerai le post comme , mais en attendant, j'espère qu'un(e) sombre inconnu(e) viendra me sauver.

  12. #12
    Membre chevronné Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 188
    Par défaut
    Est ce qu'un "zip" est envisageable pour les fichiers "sauvegardés" ?

  13. #13
    Membre chevronné

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Par défaut
    Pour ton problème de temps de traitement, tu peux peut-être envisager le traitement par plusieurs threads :
    - 1 qui copie le fichier et qui crée par exemple un fichier temporaire du même nom avec une extension identifiable et contenant les données nécessaires à l'autre thread ;
    - 1 qui se charge de traiter ces fichiers temporaires x minutes plus tard et qui affectent les dates stockées dans ces fichiers avant de les supprimer.
    J'utilise des fichiers temporaires car cela évite d'avoir à gérer un accès multiple à une collection et si le programme s'arrête, on ne perd pas tout.

  14. #14
    Membre confirmé Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Par défaut
    Bonsoir !

    Pour les fichiers zip, c'est peu probable, l'archivage est très organisé, donc il faudrait presqu'un zip par fichier, ça ne serait pas possible.

    Pour cette histoire de Thread, j'y ai effectivement pensé mais je dois avouer que je n'a pas plus creusé car nous n'avons pas eu le temps de faire de cours dessus. J'essayerai de me documenter Lundi quand je reprendrais le travail.

    Merci pour vos réponses, je sens que le projet avance.

  15. #15
    Membre confirmé Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Par défaut
    Après quelques recherches, j'ai pu comprendre comment marchaient les Threads (en gros). Cependant, je n'arrive pas à les utiliser sans faire planter mon PC ...

    En gros, on devrait avoir un truc du genre :

    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
    25
    26
    27
     
          public void testerFonctionnalites()
          {            
                Console.WriteLine("\n~~~~~~~~~ Recherche (H) ~~~~~~~~~\n");
                rechercher();
                Thread monThreadCopier, monThreadChanger;
                foreach (FileInfo monFichier in mesFichiers)
                {
                    String source = monFichier.FullName;
                    String cible = Path.Combine(disqueArchive, monFichier.Name);               
     
                    try
                    {                   
                        Console.WriteLine("\n\n~~~~~~~~~ Copie de H vers I ~~~~~~~~~\n");
                        monThreadCopier = new Thread(delegate() { File.Copy(source, cible); });  /*Ou une méthode perso qui copie et créé le fichier temporaire*/               
                        monThreadCopier.Start();  
     
                        Console.WriteLine("\n\n~~~~~~~~~ 1ère Modification date dernier accès I ~~~~~~~~~\n");
                        monThreadChanger = new Thread(delegate() { changerDates(source, cible); });
                        monThreadChanger.Start();
                    }
                    catch (IOException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
            }
    J'ai bon?

  16. #16
    Membre confirmé Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Par défaut


    Ce n'est pas très urgent, mais je ne voulais pas que le sujet tombe dans les abysses du forum.

    Désolé pour le triple post.

  17. #17
    Membre chevronné

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Par défaut
    Hello,
    Pour ma part, j'aurais plutôt vu un thread qui copie tous les fichiers et un qui se charge de modifier la date de tous les fichiers copiés. Parce que là, j'ai bien peur que tu lances un paquet de threads !

  18. #18
    Membre confirmé Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Par défaut
    Bonjour !

    Ca confirme ce que je pensais : j'ai pas compris comment les mettre en place.

    Aurais-tu une ébauche de code à partir duquel je pourrais travailler?

    Je crois que j'ai besoin de concret. Merci !

  19. #19
    Membre chevronné

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Par défaut
    Hello,
    Après une plus ample réflexion, je pense que la première chose à faire avant de partir sur du multi-threading, c'est de faire marcher le programme linéairement. Il mettra du temps mais ce sera plus simple à faire. Dans un second temps, peut-être du multi-threadinf sera une bonne chose.
    Du coup, au vu de ce que tu exprimes dans tes précédents posts, voilà la réflexion à mener (mais évidemment ce n'est qu'une proposition, je ne connais pas tous les problèmes que tu rencontres).
    1. Identification des fichiers à traiter : apparemment tu les identifies une fois au lancement et tu les stockes dans une liste ;
    2. Chaque fichier à traiter est copié sur le disque de back-up : avant d'effectuer cette opération, je créerais un fichier dans lequel je stockerais les informations nécessaires à la suite (et notamment les dates de dernier accès et de création du fichier) et le nommerais nom_du_fichier_complet_copié.bup (par exemple) ;
    3. Tous les X fichiers traités (ou toutes les X minutes ou...), on re-parcourt les fichiers .bup pour changer les dates du fichier associé ; soit on supprime le fichier bup juste après, soit on le supprime aux passages suivants dès que les dates du fichier créé correspondent aux dates attendues (puisque ton problème est lié principalement à ces dates incorrectes).
    On renouvelle les étapes 2 et 3 à l'envi.

    L'avantage du fichier .bup, c'est que si le programme plante, tu ne perds pas tout

  20. #20
    Membre confirmé Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Par défaut
    Salut.

    Hum. Pour tout dire, le programme marche nickel, je l'ai même optimisé en créant une classe qui se base sur un FileInfo et qui enregistre d'autres données. Du coup, ça me permet de ne pas utiliser de fichiers (le but du traitement étant de libérer de la place, au final, je ne peux pas m'amuser à créer un fichier de copie pour chaque fichier, même si je les supprimes après).

    Tout ce dont j'avais besoin c'était une façon de le faire marcher plus rapidement pour une éventuelle V2. Mais ça me semble farfelu et un poil complexe.

    Bref, merci pour vos réponses, à tous, je ne vais pas insister, mon problème d'origine étant résolu, je marque le sujet comme tel.


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

Discussions similaires

  1. Date du dernier acces à mon formulaire
    Par yatmen dans le forum IHM
    Réponses: 4
    Dernier message: 25/02/2009, 16h08
  2. Date du dernier accès à un objet
    Par ilalaina dans le forum Administration
    Réponses: 1
    Dernier message: 03/09/2008, 09h03
  3. Réponses: 2
    Dernier message: 14/12/2006, 09h35
  4. Réponses: 2
    Dernier message: 29/11/2006, 11h19
  5. [Upload] Date de dernier accès aux fichiers...
    Par John@EuroDevz dans le forum Langage
    Réponses: 10
    Dernier message: 08/04/2005, 10h57

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