C# で gzip 圧縮されたファイルをダウンロードして解凍するにはどうすればよいですか?
質問
コンテンツを定期的にダウンロード、抽出、保存する必要があります。 http://data.dot.state.mn.us/dds/det_sample.xml.gz ディスクに。C# で gzip ファイルをダウンロードした経験のある人はいますか?
解決
圧縮するには:
using (FileStream fStream = new FileStream(@"C:\test.docx.gzip",
FileMode.Create, FileAccess.Write)) {
using (GZipStream zipStream = new GZipStream(fStream,
CompressionMode.Compress)) {
byte[] inputfile = File.ReadAllBytes(@"c:\test.docx");
zipStream.Write(inputfile, 0, inputfile.Length);
}
}
解凍するには:
using (FileStream fInStream = new FileStream(@"c:\test.docx.gz",
FileMode.Open, FileAccess.Read)) {
using (GZipStream zipStream = new GZipStream(fInStream, CompressionMode.Decompress)) {
using (FileStream fOutStream = new FileStream(@"c:\test1.docx",
FileMode.Create, FileAccess.Write)) {
byte[] tempBytes = new byte[4096];
int i;
while ((i = zipStream.Read(tempBytes, 0, tempBytes.Length)) != 0) {
fOutStream.Write(tempBytes, 0, i);
}
}
}
}
C# と組み込みの GZipStream クラスを使用して gzip ファイルを解凍する方法を示す、昨年書いた投稿から抜粋しました。http://blogs.msdn.com/miah/archive/2007/09/05/zipping-files.aspx
他のヒント
System.Net の WebClient を使用して、以下をダウンロードできます。
WebClient Client = new WebClient ();
Client.DownloadFile("http://data.dot.state.mn.us/dds/det_sample.xml.gz", " C:\mygzipfile.gz");
それから使用します #ziplib 抽出する
編集:またはGZipStream...あれのことは忘れた
ただ使用してください HttpWebRequest System.Net 名前空間のクラスを使用してファイルを要求し、ダウンロードします。次に、使用します GZipStream System.IO.Compression 名前空間のクラスを使用して、指定した場所にコンテンツを抽出します。彼らは例を示しています。
の GZipStream クラスはあなたが望むものかもしれません。
所属していません StackOverflow