C# - close-stream und Datei löschen, wenn etwas fehlgeschlagen ist
Arbeite ich mit einem Datei-stream in C#. Es ist ein Speicher-cache, so dass, wenn etwas schlecht geht, schreiben Sie die Datei (beschädigte Daten, ... ), muss ich löschen Sie die Datei und rethrow Ausnahme um das problem zu melden. Ich bin am überlegen, wie das umzusetzen, es in der besten Weise. Mein Erster Versuch war:
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();
}
}
Wie Sie sehen werden, wenn etwas schlecht geht, schreiben Sie die Datei, die fileStream geschlossen werden zweimal. Ich weiß, dass es funktioniert, aber ich glaube nicht, dass die beste Umsetzung.
Ich denke, dass ich entfernen konnte, die finally
block, und schließen Sie den Strom in der try
block, aber ich habe diese hier, weil Sie Leute sind Experten, und ich will hören die Stimme eines Experten.
Dank im Voraus.
InformationsquelleAutor Daniel Peñalba | 2010-11-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn du den fileStream in einen using-block verwenden, brauchen Sie nicht zu kümmern, schließen Sie es, und dann lassen Sie das Aufräumen (löschen der Datei in den catch-block.
InformationsquelleAutor BBoy