Probleme pour ecraser fichier Thumbs.db

Signaler
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
-
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
-
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

Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
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?
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
2
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
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
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?
Messages postés
129
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
30 décembre 2007
3
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.
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
2
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