C#XmlTextWriter类和VisualStudio

C#XmlTextWriter类和VisualStudio,c#,xml,visual-studio,xmltextwriter,C#,Xml,Visual Studio,Xmltextwriter,我试图在C#中使用XmlTextWriter类,但它只有在给出文件的完整路径(如“C:\file.xml”)时才起作用。如果我尝试使用相对路径(如“file.xml”),它会创建文件(在包含cs文件的同一文件夹中),但不会显示任何内容。VS中的项目树中是否有我必须设置的属性,以便在每次运行程序时更新文件 一些代码有助于: 如果我这样做: XmlTextWriter f = new XmlTextWriter("C:/file.xml", null); 它起作用了 但是如果我尝试使用项目中包含的

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

一些代码有助于:

如果我这样做:

XmlTextWriter f = new XmlTextWriter("C:/file.xml", null);
它起作用了

但是如果我尝试使用项目中包含的文件,例如:

XmlTextWriter f = new XmlTextWriter("file.xml", null);
它不起作用。文件仍然为空


提前下载。

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


特别是如果只提供文件名-无路径,则可能会在.exe文件旁边创建具有指定名称的文件

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


特别是如果只提供文件名-无路径,则可能会在.exe文件旁边创建具有指定名称的文件。听起来好像写入程序内部的文件流没有刷新到磁盘。当内部流达到一定大小时,这将自动发生,但我认为无法保证何时发生,或者有多少数据写入磁盘。我建议您在使用writer并希望确保其内容写入磁盘时,在writer上调用
Close()
Dispose()

此外,请注意以下建议

使用
XmlWriter创建writer。创建
并将其放置在using块中

using (XmlWriter writer = XmlWriter.Create(filename))
{ /* code that uses writer */ }
这使得文本编写器的创建更加灵活,因为如果需要,您可以传递
XmlReaderSettings
。另外,当您使用writer时,using块负责关闭/释放调用

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

using (XmlWriter writer = XmlWriter.Create(File.Open(filename, FileMode.Open))
{ /* code that uses writer */ }

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

听起来好像写入程序内部的文件流没有刷新到磁盘。当内部流达到一定大小时,这将自动发生,但我认为无法保证何时发生,或者有多少数据写入磁盘。我建议您在使用writer并希望确保其内容写入磁盘时,在writer上调用
Close()
Dispose()

此外,请注意以下建议

使用
XmlWriter创建writer。创建
并将其放置在using块中

using (XmlWriter writer = XmlWriter.Create(filename))
{ /* code that uses writer */ }
这使得文本编写器的创建更加灵活,因为如果需要,您可以传递
XmlReaderSettings
。另外,当您使用writer时,using块负责关闭/释放调用

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

using (XmlWriter writer = XmlWriter.Create(File.Open(filename, FileMode.Open))
{ /* code that uses writer */ }

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

您可以在使用XmlTextWriter的地方共享一些代码,以及预期的结果吗?请粘贴到代码中。是否正确关闭文件/流?我强烈推荐“使用”关键字,顺便说一句。你完成后是否关闭了编写器?是的,我正在关闭编写器。如果我一直使用绝对路径到达项目中文件的位置,它就像一个符咒。但是简单地输入文件名并没有任何作用。我以为是名称或位置,但我的VS没有引发任何异常,我的程序运行良好。你能分享一些使用XmlTextWriter的代码吗?你希望得到什么结果?请粘贴你的代码。是否正确关闭文件/流?我强烈推荐“使用”关键字,顺便说一句。你完成后是否关闭了编写器?是的,我正在关闭编写器。如果我一直使用绝对路径到达项目中文件的位置,它就像一个符咒。但是简单地输入文件名并没有任何作用。我以为是名称或位置,但我的VS没有引发任何异常,我的程序运行良好。谢谢Steve,我遵循你的建议。谢谢Steve,我遵循你的建议。结果它确实在.exe文件旁边创建了文件。我必须给出文件的完整路径。结果它确实在.exe文件旁边创建了文件。我必须给出文件的完整路径。