【发布时间】:2021-07-18 13:58:23
【问题描述】:
我正在尝试压缩文本文件并在控制台应用程序中将其拆分为块(字节 [])。
public List<byte[]> CreateChunks(string fileName, string txtFilePath)
{
long chunkSize = 100 * 1000;//100kb
var fileChunks = new List<byte[]>();
using (var memoryStream = new MemoryStream())
{
using (var zipArchive = new ZipArchive(memoryStream, ZipArchiveMode.Create, false))
{
zipArchive.CreateEntryFromFile($"{txtFilePath}", fileName, CompressionLevel.Optimal);
memoryStream.Position = 0;
var buffer = new byte[chunkSize];
while (memoryStream.Read(buffer, 0, buffer.Length) > 0)
{
fileChunks.Add(buffer);
}
}
}
return fileChunks;
}
使用这些块,我正在尝试在另一个应用程序中创建一个 zip 文件。
public void JoinChunks(List<byte[]> fileChunks, string filePath)
{
var memory = new MemoryStream();
using (var file = new FileStream(filePath + "\\temp.zip", FileMode.Create))
{
foreach (var item in fileChunks)
{
memory.Write(item, 0, item.Length);
}
memory.WriteTo(file);
file.Close();
}
}
查看创建的 zip 文件时,弹出错误并显示 Unexpected end of archive。
如果我尝试将一个文本文件分块并重新加入它们,那么它工作正常。问题出在 ZIP 中。欢迎任何解决方案。
【问题讨论】:
标签: c# file memorystream ziparchive