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))
{