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

Schreibe einen Kommentar