Accueil > Forum > > > > Calculer le temps restant dans une copie de fichiers
Calculer le temps restant dans une copie de fichiers
mardi 19 décembre 2006 à 13:10:02 |
Calculer le temps restant dans une copie de fichiers

Siteauludo
|
Bonjour, J'ai fait un petit programme de backup et j'ai un léger problème : Je souhaite pouvoir afficher le temps restant (en gros bien sûr, comme pour les boîtes de dialogues de copie de fichiers de windows xp) avant la fin de la sauvegarde. En théorie, je calcule très précisément le temps de copie d'un fichier, et je fais : (Durée / TailleFichier) * TailleTotaleDeLaSauvegarde ça marche plutôt pas mal, mais bien sûr le temps restant change de manière intempestive (ce qui est normal, car ça dépend de la rapidité des gros fichiers par rapport aux plus petits, de l'occupation actuelle du processeur...). En bref, ça passe de 2943 minutes à -3 secondes sans autres, et ça repart à 3943324 heures... Es-ce que quelqu'un à une idée pour reproduire le système qui calcule le temps de windows XP ? Il n'est certe pas très constant non plus, mais il est beaucoup plus réalise (il passe de 20 minutes à 15 min, par exemple). Je suppose qu'il faudrait faire une moyenne, mais j'ai pas encore trouvé comment. Merci, Siteauludo PS : Comme c'est un programme de backup, il peut y avoir des énormes fichiers comme des minuscules, et le tout en grande quantité.
|
|
mardi 19 décembre 2006 à 14:07:17 |
Re : Calculer le temps restant dans une copie de fichiers

fcolo
|
Je pense à un tableau (tampon) dans lequel tu sauvegardes les x dernières mesures. Pour l'affichage, tu indiques la moyenne des mesures du tableau.
Tu conserve juste l'index en cours du tableau, que tu incrémente à chaque nouvelle mesure. Dès que tu atteint la fin du tableau, tu reparts au début.
A toi de faire varier la taille du tableau pour trouver une version assez stable (pas assez de points implique des changements brutaux et trop de points fera pas assez varier la moyenne).
f.colo
|
|
mardi 19 décembre 2006 à 16:16:35 |
Re : Calculer le temps restant dans une copie de fichiers

SharpMao
|
Hello,
Est-ce que tu peux nous mettre le bout de code ou tu fait le calcul, car si tu as -3s, ça veut dire qu'une des valeurs est négatives, et je ne vois pas comment ça peut arriver.
Amicalement, SharpMao
|
|
mercredi 20 décembre 2006 à 21:34:03 |
Re : Calculer le temps restant dans une copie de fichiers

Siteauludo
|
Bonjour,
tout d'abort, merci pour vos réponses, mais pour répondre à SharpMao, non, je n'ai pas le code, car vu qu'il ne marchait pas je l'ai supprimé, et maintenant que j'ai fini mon projet je souhaiterai le réajouter.
Mais le code était simple,
Je calculais le temps nécessaire à la copie
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
D1 = Datetime.Now.TimeOfDay;
File.Copy(x, y);
D2 = Datetime.Now.TimeOfDay;
TempsFichier = D2 - D1;
TempsRestant = (TempsFichier / TailleFichierEnOctets) * TailleTotalBackupEnOctets;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Voilà, en gros c'était ça.
J'ai aussi essayé avec les DateTime.Now.Ticks, mais impossible de trouver comment les reconvertir en secondes.
Merci,
Siteauludo
|
|
vendredi 22 décembre 2006 à 12:56:43 |
Re : Calculer le temps restant dans une copie de fichiers

Siteauludo
|
Personne ne peut me dire si le code est bon ?
Siteauludo
|
|
mercredi 27 décembre 2006 à 09:13:48 |
Re : Calculer le temps restant dans une copie de fichiers

SharpMao
|
Réponse acceptée !
Hello, Il y a un défaut à ton calcul, c'est que tu ne tiens compte que du dernier fichier copié. En tenant compte de l'ensemble des fichiers déjà copiés, tu auras une approximation plus précise. On peut dire que le temps restant est égal au temps effectué multiplié par le rapport entre la taille restante à copier et la taille déjà copiée. string [] FileList = Directory.GetFiles(Path1); long lngTotSize = 0; foreach (string strFile in FileList) { lngTotSize += newFileInfo(strFile).Length; }
DateTime dtStart = DateTime.Now; long lngCopiedSize = 0;
foreach (string strFile in FileList) { FileInfo fi = newFileInfo(strFile); File.Copy(strFile, Path.Combine(Path2, fi.Name)); lngCopiedSize += fi.Length; TimeSpan TimeDone = DateTime.Now - dtStart; TimeSpan TimeRemaining = newTimeSpan((long)(TimeDone.Ticks * ((double)(lngTotSize - lngCopiedSize) / lngCopiedSize))).ToString(); }Les typecasting et les parenthèses sont très importants, car si on ne convertit pas en double, une fois la moitié passée, le resultat de la division est inférieur à 1, donc 0 pour un type long. Il faut également faire attention, car même si les nombres sont des long (64 bits), si on les multiplie sans précautions, on peut rapidement arriver à des Overflow, et donc des nombres négatifs. J'espère que je ne me suis pas trompé dans mes calculs, et que ceci pourra t'aider. Amicalement, SharpMao
|
|
mercredi 27 décembre 2006 à 18:51:11 |
Re : Calculer le temps restant dans une copie de fichiers

Siteauludo
|
Merci beaucoup !
Désolé d'avance, je ne peux pas tester ça immédiatement, j'ai du désinstaller visual studio, et je ne pourrais pas l'installer avant plusieurs jours, mais ce code me paraît très bien !
Je posterai les résultats ici, au cas où d'autres personnes auraient le même problème que moi.
Encore merci,
Siteauludo
|
|
Cette discussion est classée dans : copie, temps, fichiers, calculer, restant
Répondre à ce message
Sujets en rapport avec ce message
Calcul de temps [ par TheGo ]
Salut ..Voila j'ai une fonction qui doit afficher le temps restant avant l'execution d'une action .Ma fonction arrive a afficher les secondes restante
Temps d'exécution d'1 aspx : comment le calculer ? [ par v1nce ]
Bonjour,J'ai des problème de perf dans l'exécution de mes scripts aspx sans que je sache si cela vient des scripts ou d'un problème réseau.Mon site es
Copie de fichiers fini?????? [ par yanis7518 ]
SalutComment puis-je savoir que la copie d'un fichiers(ou plusieur fichiers) est terminée avant de passer au traitement suivant<IMG
Création de dossiers et Copie de fichiers mp3 [ par Moomoon07 ]
Salut !Est ce quelqu'un pourrait me dire quelle classe utiliser pour créer des dossiers et copier des fichiers.Je voudrais aussi pouvoir classer les f
FileSystemWatcher et copie de nombreux fichiers [ par katwes ]
Bonjour,J'ai besoin de de scruter un répertoire dans l'attente de fichiers.J'utilise FileSystemWatcher pour détecter les changements dans ce répertoir
Ouvrir plusieurs fichiers en même temps à partir de l'exploreur [ par Cryel ]
Salut,Je développe un lecteur mp3 en C# et je veux faire en sorte que si je sélectionne plusieurs fichiers audio dans l'explorateur windows, je voudra
Copie de tout les répertoires et les fichiers [ par roumshi ]
Salut!Je voulais savoir comment on fait pour copier tout les repertoires et les fichiers d'un répertoire sélectionné!pour les fichier c'est bien file.
ProgressBar et copie de fichiers [ par geektoo ]
Salut à tous,J'ai un petit soucis avec une progressbar.Voila, je voudrais afficher la progression de copie de fichiers, mais part lot.Avec un foreach
Copie de fichiers d'un PC vers un autre PC [ par cybers7119 ]
Bonjour à tous,J'utilise actuellement Visual Studio pour un développement d'applications en C#.J'aimerais savoir s'il existe un moyen, en C#, de copie
Copie de Fichiers et tri alphabétique [ par thebigboss ]
J'ai deux questions. 1er: Comment trier par ordre alphabétique un tableau de string???? 2eme: <img
Livres en rapport
|
Derniers Blogs
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|