/// <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); } }
/// <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); } }