begin process at 2012 05 28 23:20:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Copie de fichier avec barre de progression


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Copie de fichier avec barre de progression

dimanche 27 janvier 2002 à 00:16:02 | Copie de fichier avec barre de progression

JMGR

Salut,
Comment peut-on copier un fichier avec une barre de progression ?
dimanche 27 janvier 2002 à 10:57:05 | Re : Copie de fichier avec barre de progression

MangaII

Salut !
Pour copier un fichier, tu as, en gros, 2 solutions ! soit tu utilise une fonction déjà existante (ex :les API windows) soit tu le fé toi même !
Si tu utilise une fonction existante, à moins qu'il y ai prévu un appel a une fonction Callback, tu pourra pas faire de barre de progression !
Par contre, si tu fé ton propre système de copie (et c pas bien compliqué), tu pourra y integrer tout ce que tu ve !
Pour copier un fichier, il fo ouvrir le fichier source, ouvrir le fichier destination, puis lire des blocs dans le source, et les ecrire dans le destination, et ce, jusqu'a la fin du fichier !
En gros, tu va utiliser des bloc de 1Ko (par exemple), ce qui fé que tu aura une boucle While, et a chaque passage dans la boucle, tu peu faire afficher la barre de progression !
Et voilà !

A+
NICO !



-------------------------------
Réponse au message :
-------------------------------

Salut,
Comment peut-on copier un fichier avec une barre de progression ?
dimanche 27 janvier 2002 à 13:23:59 | Re : Copie de fichier avec barre de progression

JMGR

Salut,
Mais avec les API, il y a bien la fonction CopyFileEx, mais elle ne marche qu'avec Windows NT ! (J'ai Windows 98) On peut faire autrement ?

Sinon pour ton système de copie, c'est intéressant, mais c'est bien :
FILE *fp,*fp2;
char temp[255]="Vide";
for(int i=0;strcmp(temp,"");i++)
{
fscanf(fp,"%s",&temp);
fprintf(fp2,"%s",temp);
}


-------------------------------
Réponse au message :
-------------------------------

Salut !
Pour copier un fichier, tu as, en gros, 2 solutions ! soit tu utilise une fonction déjà existante (ex :les API windows) soit tu le fé toi même !
Si tu utilise une fonction existante, à moins qu'il y ai prévu un appel a une fonction Callback, tu pourra pas faire de barre de progression !
Par contre, si tu fé ton propre système de copie (et c pas bien compliqué), tu pourra y integrer tout ce que tu ve !
Pour copier un fichier, il fo ouvrir le fichier source, ouvrir le fichier destination, puis lire des blocs dans le source, et les ecrire dans le destination, et ce, jusqu'a la fin du fichier !
En gros, tu va utiliser des bloc de 1Ko (par exemple), ce qui fé que tu aura une boucle While, et a chaque passage dans la boucle, tu peu faire afficher la barre de progression !
Et voilà !

A+
NICO !



-------------------------------
Réponse au message :
-------------------------------

Salut,
Comment peut-on copier un fichier avec une barre de progression ?

dimanche 27 janvier 2002 à 14:10:17 | Re : Copie de fichier avec barre de progression

ADPro22


Pour Windows 98 ultilise la fonction CopyFile (inclure winbase.h) mais il n'y a pas de barre de progression...

BOOL CopyFile(

LPCTSTR lpExistingFileName, // adresse du nom du fichier source
LPCTSTR lpNewFileName, // adresse du nom du fichier cible
BOOL bFailIfExists // flag renvoyé si le fichier éxiste déjà
);




-------------------------------
Réponse au message :
-------------------------------

Salut,
Mais avec les API, il y a bien la fonction CopyFileEx, mais elle ne marche qu'avec Windows NT ! (J'ai Windows 98) On peut faire autrement ?

Sinon pour ton système de copie, c'est intéressant, mais c'est bien :
FILE *fp,*fp2;
char temp[255]="Vide";
for(int i=0;strcmp(temp,"");i++)
{
fscanf(fp,"%s",&temp);
fprintf(fp2,"%s",temp);
}


-------------------------------
Réponse au message :
-------------------------------

Salut !
Pour copier un fichier, tu as, en gros, 2 solutions ! soit tu utilise une fonction déjà existante (ex :les API windows) soit tu le fé toi même !
Si tu utilise une fonction existante, à moins qu'il y ai prévu un appel a une fonction Callback, tu pourra pas faire de barre de progression !
Par contre, si tu fé ton propre système de copie (et c pas bien compliqué), tu pourra y integrer tout ce que tu ve !
Pour copier un fichier, il fo ouvrir le fichier source, ouvrir le fichier destination, puis lire des blocs dans le source, et les ecrire dans le destination, et ce, jusqu'a la fin du fichier !
En gros, tu va utiliser des bloc de 1Ko (par exemple), ce qui fé que tu aura une boucle While, et a chaque passage dans la boucle, tu peu faire afficher la barre de progression !
Et voilà !

A+
NICO !



-------------------------------
Réponse au message :
-------------------------------

Salut,
Comment peut-on copier un fichier avec une barre de progression ?


dimanche 27 janvier 2002 à 17:28:36 | Re : Copie de fichier avec barre de progression

JMGR


Heu... Oui je connais...
Et pour mon code, il est bon ?


-------------------------------
Réponse au message :
-------------------------------


Pour Windows 98 ultilise la fonction CopyFile (inclure winbase.h) mais il n'y a pas de barre de progression...

BOOL CopyFile(

LPCTSTR lpExistingFileName, // adresse du nom du fichier source
LPCTSTR lpNewFileName, // adresse du nom du fichier cible
BOOL bFailIfExists // flag renvoyé si le fichier éxiste déjà
);




-------------------------------
Réponse au message :
-------------------------------

Salut,
Mais avec les API, il y a bien la fonction CopyFileEx, mais elle ne marche qu'avec Windows NT ! (J'ai Windows 98) On peut faire autrement ?

Sinon pour ton système de copie, c'est intéressant, mais c'est bien :
FILE *fp,*fp2;
char temp[255]="Vide";
for(int i=0;strcmp(temp,"");i++)
{
fscanf(fp,"%s",&temp);
fprintf(fp2,"%s",temp);
}


-------------------------------
Réponse au message :
-------------------------------

Salut !
Pour copier un fichier, tu as, en gros, 2 solutions ! soit tu utilise une fonction déjà existante (ex :les API windows) soit tu le fé toi même !
Si tu utilise une fonction existante, à moins qu'il y ai prévu un appel a une fonction Callback, tu pourra pas faire de barre de progression !
Par contre, si tu fé ton propre système de copie (et c pas bien compliqué), tu pourra y integrer tout ce que tu ve !
Pour copier un fichier, il fo ouvrir le fichier source, ouvrir le fichier destination, puis lire des blocs dans le source, et les ecrire dans le destination, et ce, jusqu'a la fin du fichier !
En gros, tu va utiliser des bloc de 1Ko (par exemple), ce qui fé que tu aura une boucle While, et a chaque passage dans la boucle, tu peu faire afficher la barre de progression !
Et voilà !

A+
NICO !



-------------------------------
Réponse au message :
-------------------------------

Salut,
Comment peut-on copier un fichier avec une barre de progression ?



dimanche 27 janvier 2002 à 20:19:28 | Re : Copie de fichier avec barre de progression

MangaII

A priori, ton code est pas génial !
Si tu ve copier des fichier, ce ne sont pas forcéments des fichiers de texte, et dans ce cas, tu est obligé de lire des octets en mode bianire, et pas des chaines de caractère !
Déjà il fo ouvrir les fichier en binaire (voir la doc de fopen )
ensuite, utilise fread, et fwrite pour lite et écrire des bloc de donnée (en nombre d'octets) ! tu pe lire 1 octet, puis ecrire 1 octet !

Ensuite, ta boucle FOR est inutilisable dans ton cas ! il te fo utiliser un while, et pour tester si tu est a la fin du fichier, utilise feof !

Voilà, avec tout ca, tu as toutes les fonctions pour créé ta propre fonction copier !

a+
NICO


-------------------------------
Réponse au message :
-------------------------------


Heu... Oui je connais...
Et pour mon code, il est bon ?


-------------------------------
Réponse au message :
-------------------------------


Pour Windows 98 ultilise la fonction CopyFile (inclure winbase.h) mais il n'y a pas de barre de progression...

BOOL CopyFile(

LPCTSTR lpExistingFileName, // adresse du nom du fichier source
LPCTSTR lpNewFileName, // adresse du nom du fichier cible
BOOL bFailIfExists // flag renvoyé si le fichier éxiste déjà
);




-------------------------------
Réponse au message :
-------------------------------

Salut,
Mais avec les API, il y a bien la fonction CopyFileEx, mais elle ne marche qu'avec Windows NT ! (J'ai Windows 98) On peut faire autrement ?

Sinon pour ton système de copie, c'est intéressant, mais c'est bien :
FILE *fp,*fp2;
char temp[255]="Vide";
for(int i=0;strcmp(temp,"");i++)
{
fscanf(fp,"%s",&temp);
fprintf(fp2,"%s",temp);
}


-------------------------------
Réponse au message :
-------------------------------

Salut !
Pour copier un fichier, tu as, en gros, 2 solutions ! soit tu utilise une fonction déjà existante (ex :les API windows) soit tu le fé toi même !
Si tu utilise une fonction existante, à moins qu'il y ai prévu un appel a une fonction Callback, tu pourra pas faire de barre de progression !
Par contre, si tu fé ton propre système de copie (et c pas bien compliqué), tu pourra y integrer tout ce que tu ve !
Pour copier un fichier, il fo ouvrir le fichier source, ouvrir le fichier destination, puis lire des blocs dans le source, et les ecrire dans le destination, et ce, jusqu'a la fin du fichier !
En gros, tu va utiliser des bloc de 1Ko (par exemple), ce qui fé que tu aura une boucle While, et a chaque passage dans la boucle, tu peu faire afficher la barre de progression !
Et voilà !

A+
NICO !



-------------------------------
Réponse au message :
-------------------------------

Salut,
Comment peut-on copier un fichier avec une barre de progression ?




lundi 28 janvier 2002 à 08:14:11 | Re : Copie de fichier avec barre de progression

JMGR

Ok merci !



-------------------------------
Réponse au message :
-------------------------------

A priori, ton code est pas génial !
Si tu ve copier des fichier, ce ne sont pas forcéments des fichiers de texte, et dans ce cas, tu est obligé de lire des octets en mode bianire, et pas des chaines de caractère !
Déjà il fo ouvrir les fichier en binaire (voir la doc de fopen )
ensuite, utilise fread, et fwrite pour lite et écrire des bloc de donnée (en nombre d'octets) ! tu pe lire 1 octet, puis ecrire 1 octet !

Ensuite, ta boucle FOR est inutilisable dans ton cas ! il te fo utiliser un while, et pour tester si tu est a la fin du fichier, utilise feof !

Voilà, avec tout ca, tu as toutes les fonctions pour créé ta propre fonction copier !

a+
NICO


-------------------------------
Réponse au message :
-------------------------------


Heu... Oui je connais...
Et pour mon code, il est bon ?


-------------------------------
Réponse au message :
-------------------------------


Pour Windows 98 ultilise la fonction CopyFile (inclure winbase.h) mais il n'y a pas de barre de progression...

BOOL CopyFile(

LPCTSTR lpExistingFileName, // adresse du nom du fichier source
LPCTSTR lpNewFileName, // adresse du nom du fichier cible
BOOL bFailIfExists // flag renvoyé si le fichier éxiste déjà
);




-------------------------------
Réponse au message :
-------------------------------

Salut,
Mais avec les API, il y a bien la fonction CopyFileEx, mais elle ne marche qu'avec Windows NT ! (J'ai Windows 98) On peut faire autrement ?

Sinon pour ton système de copie, c'est intéressant, mais c'est bien :
FILE *fp,*fp2;
char temp[255]="Vide";
for(int i=0;strcmp(temp,"");i++)
{
fscanf(fp,"%s",&temp);
fprintf(fp2,"%s",temp);
}


-------------------------------
Réponse au message :
-------------------------------

Salut !
Pour copier un fichier, tu as, en gros, 2 solutions ! soit tu utilise une fonction déjà existante (ex :les API windows) soit tu le fé toi même !
Si tu utilise une fonction existante, à moins qu'il y ai prévu un appel a une fonction Callback, tu pourra pas faire de barre de progression !
Par contre, si tu fé ton propre système de copie (et c pas bien compliqué), tu pourra y integrer tout ce que tu ve !
Pour copier un fichier, il fo ouvrir le fichier source, ouvrir le fichier destination, puis lire des blocs dans le source, et les ecrire dans le destination, et ce, jusqu'a la fin du fichier !
En gros, tu va utiliser des bloc de 1Ko (par exemple), ce qui fé que tu aura une boucle While, et a chaque passage dans la boucle, tu peu faire afficher la barre de progression !
Et voilà !

A+
NICO !



-------------------------------
Réponse au message :
-------------------------------

Salut,
Comment peut-on copier un fichier avec une barre de progression ?





mercredi 13 octobre 2004 à 23:43:16 | Re : Copie de fichier avec barre de progression

Gendal67


Essaie ça mon vieux :-)) :

#include <iostream.h>

using namespace std;

FILE *fp, *fq;
int carac;

if ((fp = fopen(fichier_source, "rb")) != NULL)
if ((fq = fopen(fichier_destination, "wb")) != NULL) {

while ((carac = fgetc(fp)) != EOF)
fputc(carac, fq);

fclose(fp);
fclose(fq);
}


Et vala, si t'a d'autres questions, n'hésite pas... :-))

Genda67, à votre service !
vendredi 29 juillet 2005 à 14:09:24 | Re : Copie de fichier avec barre de progression

moi411

Bonjour à tous,
J'essaye moi aussi de faire une barre de progression en langage C Mais j'ai un petit soucis: comment faire pour connaitre la taille d'un répertoire (parce que je suppose que la copie ou la suppression de fichiers se fait grace à la taille et non avec le nombre de fichiers...).
J'ai essayé bêtement avec une fonction fopen puis en binaire comme on le dit plus haut: (source=fopen("c:\\nomdurepertoire","rb+");)  mais ca ne marche pas.

J'ai ensuite essayé avec le nombre de fichiers mais même problème: comment faire, cette fois,pour trouver le nombre de fichiers du répertoire... Pour ne pas dire d'avoir perdu mon temps j'ai fait un programme dans lequel je doit rentrer le nombre de fichier à copier au clavier (le programme marche mais la barre en elle-même a un problème je n'arrive pas à le résoudre):

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()
{
int x=954783; //nombre de fichiers à copier
int i=0; //indique quel fichier est copié
int j; //pourcentage de fichiers copiés


printf("Entrez le nombre de fichier a copier: ");
scanf("%d",&x);

while(i<=x)
{
j=(i*100)/x;
if((j%5)==0)
{
gotoxy(5,15);
printf("%d%",j);
}

i++;
}

printf("\n\n");
system("pause");
}

Pour faire court ma principale question est: comment on fait pour se déplacer dans un répertoire, en trouver le nombre de fichiers etc. en langage C?

Voila j'espère que je me suis bien expliqué et si qqun peut m'aider je le remercie d'avance. A plus tard.


Cette discussion est classée dans : fichier, copie, barre, progression


Répondre à ce message

Sujets en rapport avec ce message

Thread - Barre de progression (chargement de gros fichier) [ par jockos ] Bonjour, j'ai une fonction qui sert à charger un fichier et à le traiter en mémoire bloc par bloc (afin de traiter des fichiers de plusieurs centaines probleme de copie de fichier en C [ par jbdmk4 ] Bonjour tout le monde, j'ai un problème d'écriture de fichier. J'envoie un fichier quelquonque d'un client java sur un serveur C bit a bit, a première copie de fichier (MFC) [ par michelmt ] Salut,voici mon prob,j'ai mis un bouton dans mon programvc++6 (MFC) pour faire une copiedu tous les dossier qu'il a écriton me dit de prendre (CopyFil Barre de progression sous UNIX avec Xlib [ par dardarmotus ] dardarmotus Bonjour à tous,Petite question:Y-a-til un moyen de programmer en C sous UNIX une barre de progression toute simple dans une fenêtre Xwindo Copie de fichier... [ par cyber_securite ] Bonjours... Voila, je débute en c++ et je me trouves confronté à un souci de taille. J' aimerai que mon programme se copie lui même dans un autre répe [C++]Copie de masse de tout ce qu'il y a dan sun dossier [ par alexou09 ] Bonjour a tous! J'ai fait un programme permettant de copier un fichier. J'aimerai l'ameliorer de fasson a ce qu'il detecte tout les fichier d'un dossi Fichier en cours de copie [ par stpvb ] Salut,        Je cherche une méthode pour vérifier qu'un fichier est bien complet avant de lui faire subir un traitement... je pense en particulier à Barre de progression avec vc++ [ par cyberteche ] Est ce que qqn sait comment on gère une barre de progression (inserer dans une boite de dialogue) ...... pour un prog créé avec l'appWizard de vc++6.. Remplacer la copie de fichier de Windows [ par MangaII ] Salut !Quelqu'un sorai-t-il comment on pe remplacer la fonction de copie de fichier sous Windows par un programme maison !Mon but est d'optimiser la c Remplacer la fonction de copie de fichier sous Windows [ par MangaII ] Salut !Quelqu'un sorai-t-il comment on pe remplacer la fonction de copie de fichier sous Windows par un programme maison !Mon but est d'optimiser la c


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales