怎么修改一个文本文件中的某一特定行

时间:2021-10-19 23:47:34
我的文本文件很大, 我不想一次全部读进内存,我想根据已知行的行号把这一行文本读进来,读进来后做一些修改,在根据行号写回去。

10 个解决方案

#1


先Seek到这一行的位置,比如按回车的个数,然后直接向当前位置写入数据。

#2


引用 1 楼 hbxtlhx 的回复:
先Seek到这一行的位置,比如按回车的个数,然后直接向当前位置写入数据。

up

#3


引用 1 楼 hbxtlhx 的回复:
先Seek到这一行的位置,比如按回车的个数,然后直接向当前位置写入数据。

对,主要是要确定的你的行是怎么分割的,例子\n 或者\r

#4


要好的效率就要用一定(固定)格式的文件,比如每行固定80个字符。

否则,要找到一个行号必须逐个读过该行以前的 全部数据(不固定行框你只能不断搜索换行符号)。
而且更换一行后,只要新行的字符数不一样,你还得读出并且写入后面 所有的数据。

#5


如果只是“我不想一次全部读进内存”,倒比较好办。
StreamReader就是用来做这个的。

#6


引用 1 楼 hbxtlhx 的回复:
先Seek到这一行的位置,比如按回车的个数,然后直接向当前位置写入数据。


能给点代码吗

#7


System.IO.StreamReader   reader   =   new   StreamReader(@"C:\1.txt");   
  string   line;   
  while   (reader.Peek()   >=   0)   
  {   
  line   =   reader.ReadLine();     
 
  }

#8


首先,我希望确认,你的这个文件是有数据结构的文件。
不然,你今天修改了,也许是正常的,你下次修改的时候,就不知道是什么位置了。
不能够准确定位。

如果是有数据结构(记录型文件)的,那你的可以定义编号,
然后按照编号来读取、查找、修改、删除等等。

如果还是怕慢,你可以打开文件后,按区域划分为多个块,每个块用一个线程来读取,
当得到你要的数据后,让所有的线程都退出。

#9


很快我就可以懂了,来学习一下

#10


#1


先Seek到这一行的位置,比如按回车的个数,然后直接向当前位置写入数据。

#2


引用 1 楼 hbxtlhx 的回复:
先Seek到这一行的位置,比如按回车的个数,然后直接向当前位置写入数据。

up

#3


引用 1 楼 hbxtlhx 的回复:
先Seek到这一行的位置,比如按回车的个数,然后直接向当前位置写入数据。

对,主要是要确定的你的行是怎么分割的,例子\n 或者\r

#4


要好的效率就要用一定(固定)格式的文件,比如每行固定80个字符。

否则,要找到一个行号必须逐个读过该行以前的 全部数据(不固定行框你只能不断搜索换行符号)。
而且更换一行后,只要新行的字符数不一样,你还得读出并且写入后面 所有的数据。

#5


如果只是“我不想一次全部读进内存”,倒比较好办。
StreamReader就是用来做这个的。

#6


引用 1 楼 hbxtlhx 的回复:
先Seek到这一行的位置,比如按回车的个数,然后直接向当前位置写入数据。


能给点代码吗

#7


System.IO.StreamReader   reader   =   new   StreamReader(@"C:\1.txt");   
  string   line;   
  while   (reader.Peek()   >=   0)   
  {   
  line   =   reader.ReadLine();     
 
  }

#8


首先,我希望确认,你的这个文件是有数据结构的文件。
不然,你今天修改了,也许是正常的,你下次修改的时候,就不知道是什么位置了。
不能够准确定位。

如果是有数据结构(记录型文件)的,那你的可以定义编号,
然后按照编号来读取、查找、修改、删除等等。

如果还是怕慢,你可以打开文件后,按区域划分为多个块,每个块用一个线程来读取,
当得到你要的数据后,让所有的线程都退出。

#9


很快我就可以懂了,来学习一下

#10