Пример #1
0
        /// <summary>
        /// Copia o arquivo embarcado indicado para o fluxo de saída.
        /// </summary>
        /// <param name="filename">O nome do arquivo embarcado.</param>
        /// <param name="output">O fluxo para escrita do arquivo.</param>
        public static Ret CopyTo(string filename, Stream output)
        {
            var assembly  = Assembly.GetExecutingAssembly();
            var manifests = assembly.GetManifestResourceNames();

            var manifest = manifests.FirstOrDefault(m => m.EndsWith(filename));

            if (manifest == null)
            {
                return(Ret.Fail($"Arquivo não encontrado: {filename}"));
            }

            using (var stream = assembly.GetManifestResourceStream(manifest))
            {
                stream.CopyTo(output);
                output.Flush();
                return(true);
            }
        }
Пример #2
0
        /// <summary>
        /// Copia o arquivo embarcado indicado para o fluxo de saída descompactando-o.
        /// </summary>
        /// <param name="filename">O nome do arquivo embarcado.</param>
        /// <param name="output">O fluxo para escrita do arquivo.</param>
        public static Ret UnpackTo(string filename, Stream output)
        {
            var assembly  = Assembly.GetExecutingAssembly();
            var manifests = assembly.GetManifestResourceNames();

            var manifest = manifests.FirstOrDefault(m => m.EndsWith(filename));

            if (manifest == null)
            {
                return(Ret.Fail($"Arquivo não encontrado: {filename}"));
            }

            using (var input = assembly.GetManifestResourceStream(manifest))
                using (var decompress = new GZipStream(input, CompressionMode.Decompress))
                {
                    decompress.CopyTo(output);
                    decompress.Flush();
                    output.Flush();
                    return(true);
                }
        }