Example #1
0
        }         // 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