【发布时间】:2020-08-17 11:08:44
【问题描述】:
我一直在尝试将 GZipStream 转换为 MemoryStream,然后将其转换为字节数组,而无需将任何文件写入硬盘。我一直在尝试将其复制到 MemoryStream 中,但出现此错误:未处理的异常:System.ObjectDisposedException:无法访问已关闭的流。
我查看了其他一些解决方案,但未能成功地将它们实施到我想要完成的任务中。
GZipStream decompressedStream = Decompress(new FileInfo(args[0]));
using (var finalStream = new MemoryStream())
{
decompressedStream.CopyTo(finalStream);
byte[] decompressedBytes = new byte[finalStream.Length];
}
编辑:有人想让我添加 Decompress() 的代码,所以这里是
public static GZipStream Decompress(FileInfo fileToDecompress)
{
using (FileStream originalFileStream = fileToDecompress.OpenRead())
{
string currentFileName = fileToDecompress.FullName;
string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length) + " (decompressed)";
using (FileStream decompressedFileStream = File.Create(newFileName))
{
using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
{
return decompressionStream;
}
}
}
}
【问题讨论】:
-
你试过 decompressedStream.Close() 吗?也看看stackoverflow.com/questions/24253975/…
-
你能解释一下
Decompress。它是返回GZipStream的函数吗?如果是,请添加它的代码。 -
@Hamid Reza Mohammadi 是的,我会在问题中添加解压缩功能
标签: c# memorystream gzipstream