如何在文本文件中插入新行而不删除或覆盖同一行中的数据而在C#中没有第二个文件?

Dea*_*ock -4 c# text-files

我想在文本文件中间添加几行而不覆盖或删除文本文件中已有的现有数据.例如:

在插入新线之前

ABCD1A_GNHM_MODL_LEWLA  
ABCD12A_GGHM_MODL_LEWLA   
ABCD13A_GEHM_MODL_LEWLA     
ABCD14A_GHHM_MODL_LEWLA     
ABCD12A_GGHM_MODL_LEWLA  
ABCD1AW_GVHM_MODL_LEWLA       
ABCD1R_GGHB_MODL_LEWLA   
ABCD1R_GCHM_MODL_LEWLA  
Run Code Online (Sandbox Code Playgroud)

插入新行后

ABCD1A_GNHM_MODL_LEWLA    
ABCD12A_GGHM_MODL_LEWLA  
ABCD13A_GEHM_MODL_LEWLA      
ABCD14A_GHHM_MODL_LEWLA     
AAAAAAA_VVVV_vVVVV_vvVV9  ---- THIS LINE IS INSERTED  
AAEEEE_VVVV_vVVVV_vvVV9   ------THIS LINE IS INSERTED  
ABCD12A_GGHM_MODL_LEWLA  
ABCD1AW_GVHM_MODL_LEWLA     
ABCD1R_GGHB_MODL_LEWLA   
ABCD1R_GCHM_MODL_LEWLA  
Run Code Online (Sandbox Code Playgroud)

对于跟踪之后我需要插入数据的行依赖于要求,现在考虑在第4行后我需要插入两行.

谁能建议我怎么做?

Lua*_*aan 5

这归结为文件的工作方式.除了再次写入文件的其余部分之外没有任何其他方式,如果它是一个长文件,这将是昂贵的.只追加到最后是相对便宜的.

并且不要忘记,磁盘上的文件并不关心端点 - 我们在这里讨论字节,而不是字符串的集合.

您最好的选择可能是创建一个全新的文件,在首先插入数据之前复制数据,然后添加数据,然后继续复制文件的其余部分.

短篇小说:你不能在文件中间插入任何东西.你总是会覆盖.您必须至少从插入位置向前写入所有字节.