我似乎无法通过 StreamWriter 将文本写入新创建的 zip 文件(不是 gzip)。我使用 SharpZipLib,但不太明白如何让它工作。DJ Kraze 帮助我将压缩文本文件中的内容流式传输到 StreamReader,我现在尝试相反。我不想先创建一个 csv 文件,然后压缩最终文件,而是想将文本直接流式传输到 zip 容器中要创建的 csv。那可能吗?在我用于获取可与 StreamReader 一起使用的流的片段下方,它只是给出了我在寻找什么的想法,只是这次我想获取与 StreamWriter 一起使用的流。
public static Stream GetZipInputFileStream(string fileName)
{
ZipInputStream zip = new ZipInputStream(File.OpenRead(fileName));
FileStream filestream =
new FileStream(fileName, FileMode.Open, FileAccess.Read);
ZipFile zipfile = new ZipFile(filestream);
ZipEntry item;
if ((item = zip.GetNextEntry()) != null)
{
return zipfile.GetInputStream(item);
}
else
{
return null;
}
}
这是我使用它的方式,我基本上是在寻找它,但反过来(StreamWriter -> 新 zip 容器中的新 csv 文件):
using (StreamReader streamReader = Path.GetExtension(fileName).ToUpper().Equals(".ZIP") ? new StreamReader(FileOperations.GetZipInputFileStream(fileName)) : new StreamReader(fileName))
{