修改文件时,是否总是需要重写整个文件?

时间:2012-07-26 04:50:34

标签: c# file-io

修改文件时,是否总是需要重写整个文件,或者是否可以在不重写整个文件的情况下查找和更改文件的一小部分?

3 个答案:

答案 0 :(得分:4)

如果您没有插入或删除数据,则无需重写文件。您将使用新值替换现有字节,或附加到文件。

如果需要插入或删除,则只需要从该点开始重写文件。您需要重写整个文件的唯一时间是在开头插入字节。

打开具有读写权限的文件是可以的。这样你就可以在文件中搜索你想要的东西了,一旦你有了这个位置就可以找到它(从内存中,写指针与读指针是分开的)并将数据覆盖到你内心的内容=)< / p>

答案 1 :(得分:3)

如果您没有更改数据的长度,您可以随时寻找文件中的适当位置,并编写一组新的字节。这将替换最初存在的任何字节。

答案 2 :(得分:0)

有两种可能的方式:

  • 当您使用StreamWriter sw = new StreamWriter时,它会从文件中删除数据。
  • 要仅进行更改,您可以将文件数据存储在List<string>中。这对我很好:

    List<string> lines_list = new List<string>();
    int file_l = 0
    
    StreamReader sr_temp = new StreamReader(_path);
    string line;
    
    while ((line = sr_temp.ReadLine()) != null)
    {
         lines_list.Add(line);
         file_l++;
    }
    
    sr_temp.Close();
    StreamWriter sw = new StreamWriter(_path);
    for (int i = 0; i < file_l; i++)
    {
          sw.WriteLine(lines_list[i]);
    }
    
    //here you add some data
    sw.Close();