我试图在文本文件中添加一行,但先删除封闭括号。
以下是我的文本文件数据格式的样子
{
"1455494402": 8,
"1456272000": 2,
"1456358400": 1}
现在,当我追加文本文件时,数据应该如下所示
{
"1455494402": 8,
"1456272000": 2,
"1456358400": 1,
"1454716800": 1,
"1454803200": 4,
"1454889600": 7,
"1458345600": 17,
"1458518400": 1 }
我认为有两种方法可以做到这一点,
我认为,第一种选择并不那么聪明。
第二个选项很酷但如何在添加最新数据之前删除最后一个括号,我不能用新数据替换}
吗?
到目前为止,我的研究告诉我,再次写入文件是唯一更好的选择,你也这么认为吗?不能追加(在某种意义上删除括号并附加)
编辑:请不要认为这是重复的,我愿意知道第二个选项是否可行?但是我知道我可以使用上面详细信息中提到的第一个选项
答案 0 :(得分:2)
假设:
然后你可以覆盖最后一个字符,如下所示:
string filename = "test.txt";
File.WriteAllText(filename, "{One\nTwo\nThree}"); // Note curly brace at the end.
using (var file = new StreamWriter(File.OpenWrite(filename)))
{
file.BaseStream.Position = file.BaseStream.Length - 1;
file.Write("\nfour}"); // New line at end, previous brace is replaced.
}
然而,这非常脆弱。如果最后一个字符碰巧是一个以多个字节编码的字符,那么这将不起作用。
除非文件非常大并且您已经制定了时间表明值得引入这些脆弱的代码以加快速度,否则您不值得抓住机会。
请注意,通过更改传递给StreamWriter()
构造函数的编码,也可以修改此代码以使用ASCII或ANSI文件。