私は、ファイルを開き、その内容を変更してから、ファイルに書き戻すための最も合理的な方法を見つけようとしています。
次の「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*
が、それは2つのファイルを開くことを意味します。ファイルを閉じて再度開かずに、「このファイルを開いてデータを読み取り、保存時に古いコンテンツを削除したい」と言う方法はありませんか?私が見つけた他の解決策にはが含まれますFileMode.Truncate
が、それは私がコンテンツを読むことができないことを意味します。