} // func OpenWrite /// <summary>Erzeugt die angegebene Datei (neu).</summary> /// <param name="file">Datei die angelegt werden soll.</param> /// <param name="notify">Zugriff auf die UI.</param> /// <param name="compressed">Soll die Datei gepackt sein.</param> /// <returns></returns> public static Stream OpenCreate(this FileInfo file, CmdletNotify notify, CompressMode compressed = CompressMode.Stored) { if (file.Exists) { var choices = new Collection <ChoiceDescription> { new ChoiceDescription("&Überschreiben"), new ChoiceDescription("&Abbrechen") }; if (notify.UI.PromptForChoice("Überschreiben", $"Datei '{file.Name}' überschreiben?", choices, 0) != 0) { notify.Abort(); } notify.SafeIO(file.Delete, $"Datei '{file.Name}' löschen."); } // Erzeuge die Datei im sicheren Context var src = notify.SafeIO(() => OpenWrite(file), $"Datei '{file.Name}' konnte nicht angelegt werden."); // Entpacke die Daten automatisch if (compressed == CompressMode.Compressed || (compressed == CompressMode.Auto && IsGZipFile(file.Name))) { return(new GZipStream(src, CompressionMode.Compress, false)); } else { return(src); } } // func OpenCreate