C# fermer le flux et supprimer le fichier si quelque chose a échoué
Je suis en train de travailler avec un fichier de flux en C#. C'est un stockage de cache, de sorte que si quelque chose va mal écrit le fichier (données corrompues, ... ), j'ai besoin de supprimer le fichier et renvoyer l'exception pour signaler le problème. Je suis en train de penser sur la façon de mettre en œuvre de la meilleure façon. Ma première tenter a:
Stream fileStream = null;
try
{
fileStream = new FileStream(GetStorageFile(),
FileMode.Create, FileAccess.Write, FileShare.Write);
//write the file ...
}
catch (Exception ex)
{
//Close the stream first
if (fileStream != null)
{
fileStream.Close();
}
//Delete the file
File.Delete(GetStorageFile());
//Re-throw exception
throw;
}
finally
{
//Close stream for the normal case
if (fileStream != null)
{
fileStream.Close();
}
}
Comme vous le verrez, si quelque chose va mal l'écriture du fichier, la fileStream sera fermée à deux reprises. Je sais qu'il fonctionne, mais je ne pense pas que c'est la meilleure mise en œuvre.
Je pense que je pourrais supprimer le finally
bloc, et fermer le flux de données dans le try
bloc, mais j'ai posté ici parce que vous les gars sont des experts et je veux entendre la voix d'un expert.
Merci d'avance.
Vous devez vous connecter pour publier un commentaire.
Si vous mettez le fileStream dans un bloc using vous n'avez pas besoin de s'inquiéter à propos de la fermeture, et puis il suffit de laisser le nettoyage (suppression du fichier dans le bloc catch.