2

修改文件时,是否总是需要重写整个文件,或者是否可以找到并更改文件的一小部分而无需重写整个文件?

4

3 回答 3

6

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

如果您需要插入或删除,您只需要从那时起重写文件。唯一需要重写整个文件的情况是在开头插入字节。

打开具有读写权限的文件是可以的。这样您就可以在文件中搜索您要查找的任何内容,一旦您有了位置,您就可以寻找它(从内存中,写指针与读指针是分开的)并将数据覆盖到您心中的内容=)

于 2012-07-26T04:57:17.057 回答
4

如果你不改变数据的长度,你总是可以在文件中寻找合适的位置,并写入一组新的字节。这将替换最初存在的任何字节。

于 2012-07-26T04:57:24.800 回答
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();
    
于 2012-07-26T04:57:33.547 回答