如何更新始终包含单行的文本文件?

时间:2011-05-06 13:46:02

标签: c#-3.0

我有以下代码从文本文件中读取一行。 在UpdateFile()方法中,我需要删除现有的一行并用新行更新它。 任何人都可以提供任何想法吗? 谢谢。

FileInfo JFile = new FileInfo(@"C:\test.txt");
            using (FileStream JStream = JFile.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))
            {
                int n = GetNUmber(JStream);
                n = n + 1;
        UpdateFile(JStream);

            }

private int GetNUmber(FileStream jstream)
        {
            StreamReader sr = new StreamReader(jstream);
            string line = sr.ReadToEnd().Trim();
            int result;
            if (string.IsNullOrEmpty(line))
            {
                return 0;
            }
            else
            {
                int.TryParse(line, out result);
                return result;
            }
        }

private int UpdateFile(FileStream jstream)
{
    jstream.Seek(0, SeekOrigin.Begin);
    StreamWriter writer = new StreamWriter(jstream);
    writer.WriteLine(n);
}

3 个答案:

答案 0 :(得分:3)

我认为以下代码可以完成您的工作

StreamWriter writer = new StreamWriter("file path", false); //false means do not append
writer.Write("your new line");
writer.Close();

答案 1 :(得分:2)

如果您只是写一行,则不需要流或缓冲区或其中任何一个。直接写它。

using System.IO;

File.WriteAllText(@"C:\test.txt", "hello world");

答案 2 :(得分:2)

var line = File.ReadLines(@"c:\temp\hello.txt").ToList()[0];
var number = Convert.ToInt32(line);
number++;
File.WriteAllText(@"c:\temp\hello.txt", number.ToString());

管理可能的异常,文件存在,文件有行,演员......