2011-08-29 5 views
0

Je fais ce projet d'école en C# (Winforms), j'ai créé un fichier temporaire dans un sous-formulaire ... en utilisant: File.Create(filepath); mais quand j'essaie de le supprimer dans le formulaire fermé événement de ma forme principale ... alors il donne un message d'erreur. Le fichier est utilisé par un autre processus. Je essayé:Fichier txt Erreur d'accès avec C#

if (File.Exists(tmpFile)) 
    { 
    File.SetAttributes(@tmpFile, FileAttributes.Temporary); 
    File.Delete(tmpFile); 
    } 

Mais rien de bon, j'ai besoin de meilleures idées et une raison logique pour laquelle cette erreur est venue?

+0

Avez-vous le fichier ouvert dans un autre programme? – AndrewC

+0

non .. le sous-formulaire crée le fichier tmp, et l'événement de sortie dans le formulaire principal doit supprimer ce fichier .... ne pas utiliser ailleurs. Btw ouvre ce chemin dans Windows Explorer devrait apporter cette erreur? – gsvirdi

+1

J'ai compris qu'au lieu d'utiliser 'File.Create()' .... vous devriez utiliser un 'FileStream' pour créer des fichiers tmp personnalisés ..... Exemple: ' string fileName = "C: \\ "+ Log.admin.ToString() +" .tmp "; FileStream fs = nouveau FileStream (nomFichier, FileMode.CreateNew); fs.Close(); ' Plus tard, le même fichier peut être supprimé en utilisant' File.Delete (fileName); '. Gud chance à tous les nouveaux ppl, thx @VinayC & tout le monde pour m'aider à sortir de cela. – gsvirdi

Répondre

0

Vous devez utiliser Path.GetTempFileName() pour créer le fichier.

Vous n'avez pas besoin de supprimer le fichier vous-même. Windows s'en chargera pour vous.

+0

Vous pouvez savoir si vous avez le fichier ouvert dans un autre programme en utilisant handle.exe qui peut être obtenu auprès de Microsoft via http://technet.microsoft.com/en-us/sysinternals/bb896655 –

+0

Et si j'ai besoin de créer un fichier temporaire avec un nom particulier seulement? Pour Ex: string filepath = "C: \\" + comboBox1.Text + ".tmp"; – gsvirdi

+0

Vous devriez juste pouvoir créer le dossier et le supprimer juste très bien. Pourquoi s'embêter à modifier l'attribut du fichier? –

3

File.Create renvoie le flux de fichier. Assurez-vous que vous fermez le flux (ou tout autre handle vers le fichier) avant d'essayer de supprimer le fichier.

+0

J'ai compris que plutôt que d'utiliser 'File.Create()' ... vous devriez utiliser 'FileStream' pour créer des fichiers tmp personnalisés ..... Exemple:' string fileName = "C: \\" + Log.admin.ToString() + ".tmp"; FileStream fs = nouveau FileStream (nomFichier, FileMode.CreateNew); fs.Close(); 'Plus tard, le même fichier peut être supprimé en utilisant' File.Delete (fileName); '. Gud chance à tous les nouveaux ppl, thx @VinayC & tout le monde pour m'aider à sortir de cela. – gsvirdi