加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将巨大的xml数据写入文件的最佳方法?

发布时间:2020-12-15 19:35:46 所属栏目:百科 来源:网络整理
导读:我目前正在使用XmlTextWriter类将包含大量数据(100000条记录)的数据库表导出到xml文件中,并且我直接写入物理驱动器上的文件. _XmlTextWriterObject = new XmlTextWriter(_xmlFilePath,null); 虽然我的代码运行正常但我的问题是它是最好的方法吗?我应该首先
我目前正在使用XmlTextWriter类将包含大量数据(100000条记录)的数据库表导出到xml文件中,并且我直接写入物理驱动器上的文件.

_XmlTextWriterObject = new XmlTextWriter(_xmlFilePath,null);

虽然我的代码运行正常但我的问题是它是最好的方法吗?我应该首先在内存流中写入整个xml,然后从内存流中将xml文档写入物理文件中吗?在这两种情况下,对内存/性能的影响是什么?

编辑

对不起,我实际上无法表达我的意思.谢谢Ash指出.
我确实会使用XmlTextWriter,但我想说是否将物理文件路径字符串传递给XmlTextWriter构造函数(或者,如John建议的那样,传递给XmlTextWriter.Create()方法)或使用基于流的api.我当前的代码如下所示:

XmlWriter objXmlWriter = XmlTextWriter.Create(new BufferedStream(new FileStream(@"C:test.xml",FileMode.Create,System.Security.AccessControl.FileSystemRights.Write,FileShare.None,1024,FileOptions.SequentialScan)),new XmlWriterSettings { Encoding = Encoding.Unicode,Indent = true,CloSEOutput = true });
using (objXmlWriter)
{
   //writing xml contents here
}

解决方法

虽然我的代码运行正常但我的问题是它是最好的方法吗?

如上所述和您的更新,XmlWriter.Create很好.

或者我应该首先在内存流中写入整个xml,然后从内存流中将xml文档写入物理文件中?

你有内存将整个文件写入内存吗?如果您这样做,那么该方法将更快,否则使用FileStream流式传输它将为您处理它.

在这两种情况下,对内存/性能的影响是什么?

读取整个XML文件将使用更多内存,并启动处理器.流式传输到磁盘将使用更多的处理器.但是,即使是桌面硬件,你也需要使用一个巨大的文件.如果您担心未来的尺寸会增加更多,请坚持使用FileStream技术进行未来验证.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读