2010-11-06 51 views
0

Je reçois cette erreur chaque fois que je tente de sauver le fichier existant:Le processus ne peut pas accéder au fichier « directroy fichier » parce qu'il est utilisé par un autre processus en C# Fichier Writer

le processus ne peut pas accéder au fichier car il est utilisé par un autre processus

il fonctionne quand un fichier n'existe pas, mais lorsque je tente d'écrire à nouveau l'erreur apparaît. Je n'accède pas ou n'utilise pas le fichier à ce moment-là.

est ici le code:

string directory = filepath + "Updates\\" + dir; 
if(!Directory.Exists(directory)) 
{ 
    Directory.CreateDirectory(directory); 
} 
remarks = remarks.Trim(); 
remarks = remarks.Replace("\r\n","<br>"); 
remarks = remarks.Replace(",","|"); 
string file = directory + "\\" + getIndex(barcode) + ".asdt"; 
StreamWriter writer = new StreamWriter(file,true); 
writer.WriteLine(username + "," + barcode + "," + DateTime.Now.ToString("yyyy-MM-dd HH.mm")+ "," + remarks); 
writer.Close(); 

Lorsque je l'ai vérifié l'erreur se produit sur la ligne

StreamWriter writer = new StreamWriter(file,true); 

ce qui pourrait être la cause de cela?

+0

Je soutiens la réponse de Odded, mais si vous n'êtes pas sûr quel programme bloque le fichier, essayez d'utiliser le programme « Unlocker » – netadictos

+0

utilitaire poignée de Sysinternals est une meilleure affaire. Même si vous êtes susceptible de découvrir que c'est votre propre programme. –

+0

@all - Je pense que ce n'est pas l'ajouter au fichier plutôt que de créer un nouveau fichier qui crée le conflit. comment puis-je éviter de recréer un nouveau fichier. Est-ce parce que mon scripteur de déclaration (fichier, vrai) est vrai? – gibz357

Répondre

2

Votre programme ne dispose probablement pas correctement du flux de fichier, gardant le fichier ouvert.

Utilisez l'instruction using pour assurer l'élimination adéquate:

using(StreamWriter writer = new StreamWriter(file,true)) 
{ 
    writer.WriteLine(username + "," + barcode + "," + DateTime.Now.ToString("yyyy-MM-dd HH.mm")+ "," + remarks); 
    writer.Close(); 
} 
+0

il semble que j'ai juste besoin de rétablir l'instruction bool dans l'instruction streamwriter. J'ai vérifié d'autres forums, c'est ainsi que l'un des moyens acceptables pour l'élimination. Je vous remercie! – gibz357

0

Ou vous pouvez annuler l'objet écrivain après la clôture.

+0

Que fait * cela *? –

0

essayer d'utiliser writer.Flush(); avant writer.Close();

+0

@Javen Akram - monsieur il a toujours la même erreur! – gibz357