Мне кажется, что я не могу писать текст через StreamWriter во вновь создаваемый zip-файл (не в gzip). Я использую SharpZipLib и не совсем понимаю, как заставить его работать. DJ Kraze помог мне с потоковым контентом из заархивированного текстового файла в StreamReader, теперь я попробую обратное. Я не хочу сначала создавать файл csv, а затем сжимать окончательный файл, но хотел бы передавать текст непосредственно в создаваемый файл csv в контейнере zip. Это возможно? Ниже фрагмента, который я использую для получения потока, который я могу использовать с 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 -> новый CSV-файл в новом zip-контейнере):
using (StreamReader streamReader = Path.GetExtension(fileName).ToUpper().Equals(".ZIP") ? new StreamReader(FileOperations.GetZipInputFileStream(fileName)) : new StreamReader(fileName))
{