当前位置:  开发笔记 > 编程语言 > 正文

.NET - 将数据集(XML数据)流式传输到ZIP文件?

如何解决《.NET-将数据集(XML数据)流式传输到ZIP文件?》经验,为你挑选了1个好方法。

我有一个由XML数据组成的DataSet,我可以轻松地将其输出到一个文件:

DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds.Tables.Add(dt);
ds.Load(reader, LoadOption.PreserveChanges, ds.Tables[0]);
ds.WriteXml("C:\\test.xml");

但是,我想要做的是将XML压缩为ZIP或其他类型的压缩文件,然后将此文件保存到磁盘,同时将ZIP文件拆分为1MB块.我真的不想保存未压缩的文件,然后压缩它,然后拆分它.

我特别想要的是:

    一个合适的压缩库,我可以将XML流式传输到并将zip文件保存到磁盘

    一些示例C#代码可以告诉我如何做到这一点.

Matt Hamilto.. 10

我已经设法使用.NET 2.0的gzip压缩来压缩DataSet的XML流.

这是我几年前写的关于它的博客文章:

通过压缩在本地保存数据集

...这里是我添加到我的DataSet的部分类中以编写压缩文件的代码(博客帖子也有读取代码):

public void WriteFile(string fileName)
{
    using (FileStream fs = new FileStream(fileName, FileMode.Create))
    {
        Stream s;
        if (Path.GetExtension(fileName) == ".cmx")
        {
            s = new GZipStream(fs, CompressionMode.Compress);
        }
        else if (Path.GetExtension(fileName) == ".cmz")
        {
            s = new DeflateStream(fs, CompressionMode.Compress);
        }
        else
        {
            s = fs;
        }
        WriteXml(s);
        s.Close();
    }
} 

请注意,此代码根据文件的扩展名使用不同的压缩方案.这纯粹是因为我可以使用我的DataSet测试另一个方案.



1> Matt Hamilto..:

我已经设法使用.NET 2.0的gzip压缩来压缩DataSet的XML流.

这是我几年前写的关于它的博客文章:

通过压缩在本地保存数据集

...这里是我添加到我的DataSet的部分类中以编写压缩文件的代码(博客帖子也有读取代码):

public void WriteFile(string fileName)
{
    using (FileStream fs = new FileStream(fileName, FileMode.Create))
    {
        Stream s;
        if (Path.GetExtension(fileName) == ".cmx")
        {
            s = new GZipStream(fs, CompressionMode.Compress);
        }
        else if (Path.GetExtension(fileName) == ".cmz")
        {
            s = new DeflateStream(fs, CompressionMode.Compress);
        }
        else
        {
            s = fs;
        }
        WriteXml(s);
        s.Close();
    }
} 

请注意,此代码根据文件的扩展名使用不同的压缩方案.这纯粹是因为我可以使用我的DataSet测试另一个方案.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有