首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# XmlTextWriter类和VisualStudio

C# XmlTextWriter类和VisualStudio
EN

Stack Overflow用户
提问于 2009-12-17 01:51:15
回答 2查看 1.8K关注 0票数 0

我尝试在C#中使用XmlTextWriter类,但它只有在我给出文件的完整路径(如"C:\file.xml")时才起作用。如果我尝试使用相对路径(如"file.xml"),它会创建文件(在包含cs文件的同一文件夹中),但不显示任何内容。在VS中的项目树中是否有我必须设置的属性,以便每次我运行程序时文件都会更新?

以下是一些有用的代码:

如果我这样做了:

代码语言:javascript
复制
XmlTextWriter f = new XmlTextWriter("C:/file.xml", null);

它起作用了。

但如果我尝试使用项目中包含的文件,如下所示:

代码语言:javascript
复制
XmlTextWriter f = new XmlTextWriter("file.xml", null);

它不起作用。该文件仍为空。

提前做好准备。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-17 02:29:15

您有责任为XMLWriter提供包括路径在内的有效文件名。此文件路径可以是相对路径,也可以是绝对路径。问题是,相对路径将在运行时针对当前目录的任何位置工作,而不是您期望它在设计器中查看源代码的位置。

特别是,如果只给出文件名而不给出路径,则可能会在.exe文件旁边创建具有指定名称的文件

票数 3
EN

Stack Overflow用户

发布于 2009-12-17 02:32:57

听起来像是编写器内部的文件流没有被刷新到磁盘。当内部流达到一定大小时,这将自动发生,但我不认为有任何保证,何时会发生这种情况,或者有多少数据写入磁盘。当您使用完编写器并希望确保其内容被写入磁盘时,我建议您在编写器上调用Close()Dispose()

另外,请注意以下建议。

使用XmlWriter.Create创建编写器,并将其放在using块中。

代码语言:javascript
复制
using (XmlWriter writer = XmlWriter.Create(filename))
{ /* code that uses writer */ }

这允许更灵活地创建文本编写器,因为如果需要,您可以传递XmlReaderSettings。此外,当您使用完编写器时,using块负责close/dispose调用。

如果您在覆盖文件内容时遇到问题,请使用接受Stream的构造重载。

代码语言:javascript
复制
using (XmlWriter writer = XmlWriter.Create(File.Open(filename, FileMode.Open))
{ /* code that uses writer */ }

这使您可以更好地控制如何处理文件名中的冲突。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1916414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档