Probleme pour ecraser fichier Thumbs.db

cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 19 mai 2006 à 09:52
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 19 mai 2006 à 11:15
Bonjour,

je réalise une application de copie de fichier (car le File.Copy() est sans interface).
Tout fonctionne bien à par que mon application bloque lors de la copie des fichiers Thumbs.db (je crois que c'est les miniatures des image/video créer par windows).
Mon application ce fige.
Savez comment je pourrais contourner ce problème et surotut à quoi c'est dut?

Voila le bout de code pour copier un fichier:
private

Encoding encoding = System.Text.
Encoding.GetEncoding(
"iso-8859-1");
int
SIZE_BIFF = 512;

publiceventwriteFile nbWrite;

public
delegate
void
writeFile(
String file,
int nbChar);

public
bool copyfile(
String sourceFilePath,
String destinationFilePath,
bool append)
{

StreamReader sr =
null;

StreamWriter sw =
null;

if(
File.Exists(sourceFilePath))
{

char[] buff =
new
char[SIZE_BIFF];

int nbread = 0;
label1.Text = sourceFilePath;

this.progressBar1.Minimum = 0;

this.progressBar1.Value = 0;

this.progressBar1.Maximum =
Convert.ToInt32(
new
FileInfo(sourceFilePath).Length);
sr =
new
StreamReader(sourceFilePath,encoding);
sw =
new
StreamWriter(destinationFilePath,append,encoding);

while(!sr.EndOfStream && !closing)
{
nbread = sr.Read(buff,0,SIZE_BIFF);
sw.Write(buff,0,nbread);
sw.Flush();

if(nbWrite !=
null)
nbWrite(sourceFilePath,nbread);

Application.DoEvents();
}
sr.Close();
sw.Close();
}

else
{

return
false;
}

return
true;
}

5 réponses

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
19 mai 2006 à 10:15
A quel endroit le code se fige t-il ?(regarde en débugant pas a pas)

Sinon pourquoi n'utilises tu pas la méthode File.Copy() pour copier directement les fichiers?
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
19 mai 2006 à 10:39
Le code bloque ici:

sw = new StreamWriter(destinationFilePath,append,encoding);

je ne veux pas faire un File.Copy() car je veux une interface (un peu comme super copieur) pour voir le pourcentage de copie effectué.
A moins que je ne sache pas comment faire, le file.Copy() est silentieux (pas d'interface).

f.colo
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
19 mai 2006 à 10:44
Quand tu dis que ça "bloque", il se passe quoi exactement en debugant ? tu reste sur cette ligne et tu n'en sort jamais? (même apres un long moment)

Que vaut destinationFilePath lors de l'appel?
0
dgouttegattat Messages postés 129 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 décembre 2007 3
19 mai 2006 à 11:06
Bonjour,
Ça n'a rien à voir avec ton problème, je fais juste une suggestion : tu devrais utiliser la classe FileStream plutôt que StreamReader/StreamWriter pour copier des fichiers. Avec FileStream (comme avec toutes les classes *Stream comme BufferedStream, MemoryStream...) tu ne manipules que des bytes, pas des caractères, donc tu n'as pas à te soucier de l'encodage des fichiers.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
19 mai 2006 à 11:15
destinationFilePath = C:\Documents and Setting\Frédéric\Bureau\9empty\Thumbs.db

Mais ca fonctionne pour écraser d'autres types de fichiers, ca merde que sur celui là.

Lorsque ca bloque ce que ca fait:
Lors de la copie d'un fichier, j'ai une form qui s'ouvre avec une progressbar pour visualiser le transfert.

la form s'ouvre ( ouverte avant l'appel à la fonction ) et apres il ne
se passe rien car le programme attend (indéfiniment apparemnt, dejà
10min que j'attend) sur la ligne:
sw = new StreamWriter(destinationFilePath,append,encoding);

Je vais voir si ce fichier n'est pas protégé par windows ou autre.

Merci [auteurdetail.aspx?ID=628847 dgouttegattat], je vais regarder ca.
f.colo
0
Rejoignez-nous