修改txt文件
我有一个txt文件,里面的内容为张三,21岁
李四,25岁
。。。
现在,我要找到姓名为XX的,然后将年龄更新为XX岁,请问怎么操作呢,使用的是C#,希望论坛里的师兄师姐们能给小妹一点帮助!! --------------------编程问答-------------------- 用file.ReadAllText()全部读进内存,
在内存里修改后在写进文件 --------------------编程问答-------------------- 帮你写个函数,用正则处理:
--------------------编程问答--------------------
private void modifyAge(string fileName,string userName,int newAge)
{
string s = File.ReadAllText(fileName);
s=Regex.Replace(s,string.Format(@"(?<=\b{0},)\d+(?=岁\b)",userName),newAge.ToString());
File.WriteAllText(s);
}
+1 --------------------编程问答--------------------
如果文件比较大,这样的操作会不会影响速度呢?? --------------------编程问答-------------------- 边读边写 也是很难的 --------------------编程问答--------------------
文件很大就应该放到数据库,哪怕是放到xml也行,为什么要放在txt里呢? --------------------编程问答-------------------- --------------------编程问答-------------------- 嘻嘻,问题也已经得到有效的解决了,谢谢各位给与小妹分享你们的宝贵的想法。我的解决方法是
/// <summary>
/// 修改文本文件的内容
/// </summary>
/// <param name="curLine">指定修改的行数</param>
/// <param name="newLineValue">要保存的值</param>
/// <param name="patch">这个文件的路径</param>
public static void EditFile(int curLine, string newLineValue, string patch)
{
try
{
FileStream fs = new FileStream(patch, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("utf-8"));
string line = sr.ReadLine();
StringBuilder sb = new StringBuilder();
for (int i = 1; line != null; i++)
{
sb.Append(line + "\r\n");
if (i != curLine - 1)
line = sr.ReadLine();
else
{
sr.ReadLine();
line = newLineValue;
}
}
sr.Close();
fs.Close();
FileStream fs1 = new FileStream(patch, FileMode.Open, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs1);
sw.Write(sb.ToString());
sw.Close();
fs.Close();
}
catch (Exception ex)
{
throw ex;
}
}
调用这个方法 --------------------编程问答--------------------
速度肯定是这么快一些,比起便改变写的那种等等!
主要的是,如果文件大的话,需要考虑你的内存,不过要是能让内存崩掉的话,那的确很大!
补充:.NET技术 , C#