我正在尝试找到最合理的方法来打开文件,修改其内容,然后将其写回文件。
如果我有以下“MyFile.xml”
<?xml version="1.0" encoding="utf-8"?>
<node>
<data>this is my data which is long</data>
</node>
然后想按照这个来修改:
private static void Main(string[] args)
{
using (FileStream stream = new FileStream("Myfile.xml", FileMode.Open))
{
XDocument doc = XDocument.Load(stream);
doc.Descendants("data").First().Value = "less data";
stream.Position = 0;
doc.Save(stream);
}
}
我得到以下结果。请注意,由于总文件长度小于我在结尾处得到不正确数据之前的长度。
<?xml version="1.0" encoding="utf-8"?>
<node>
<data>less data</data>
</node>/node>
我想我可以使用File.ReadAll*
,File.WriteAll*
但这意味着打开两个文件。有没有办法说“我想打开这个文件,读取它的数据,当我保存时删除旧的内容”而不关闭并重新打开文件?我发现的其他解决方案包括FileMode.Truncate
,但这意味着我无法阅读内容。