
C#怎么样删除文本中指定的一行 30
是这样的我使用streamwriter1.write((char)13+"{0},{1}",string1,string2);相文本中写入数据的,(我储存的数据是stri...
是这样的我使用streamwriter1.write((char)13+"{0},{1}",string1,string2);
相文本中写入数据的,(我储存的数据是string1,string2的形式一行一个),我的问题是知道string1,string2的具体值可不可以从文本中找到并且删除这行数据。如何用新的值替换文本中指定的一行。
在线等解释 展开
相文本中写入数据的,(我储存的数据是string1,string2的形式一行一个),我的问题是知道string1,string2的具体值可不可以从文本中找到并且删除这行数据。如何用新的值替换文本中指定的一行。
在线等解释 展开
2个回答
展开全部
你看看C#里面有没有文件随机访问的一个东西。我知道Java里有(java.nio.channels .FileChannel 提供一个功能 将文件中的某个区域直接映射到内存中;对于较大的文件,这通常比调用普通的 read 或 write 方法更为高效。),大致方式和纯C语言操作文件类似,连定位字节都没问题,更别说定位行了。
再说行,什么是行?都是结尾有'\r'或者'\n'换行符的缘故,在内存里并没有真正意义上的行(内存地址都是线性的),不管是读文件还是写文件都是把磁盘上的文件数据读在内存上或者把内存上缓存的一块数据写入磁盘文件。
比如你要定位具体哪一行,你只需要看文件指针走过了多少个‘\r’或者'\n'即可,找到了以后你就往指定行写入空格就行,其中还得考虑线程并发问题,可能同时会有很多个线程同时操作那个文件,可能还需要用一些信号量,互斥量之类的东西,不过C#里面我记得好像都封装成了lock关键字,我推荐用文件映射+文件锁。
实在不行还可以把文件映射在虚拟内存上,可以把文件内容当成在内存里一样操作,这是文件映射的做法,处理大数据块的快速写入写回都非常快,用C好实现,但是C#很久没用了,你去MSDN翻翻。
再说行,什么是行?都是结尾有'\r'或者'\n'换行符的缘故,在内存里并没有真正意义上的行(内存地址都是线性的),不管是读文件还是写文件都是把磁盘上的文件数据读在内存上或者把内存上缓存的一块数据写入磁盘文件。
比如你要定位具体哪一行,你只需要看文件指针走过了多少个‘\r’或者'\n'即可,找到了以后你就往指定行写入空格就行,其中还得考虑线程并发问题,可能同时会有很多个线程同时操作那个文件,可能还需要用一些信号量,互斥量之类的东西,不过C#里面我记得好像都封装成了lock关键字,我推荐用文件映射+文件锁。
实在不行还可以把文件映射在虚拟内存上,可以把文件内容当成在内存里一样操作,这是文件映射的做法,处理大数据块的快速写入写回都非常快,用C好实现,但是C#很久没用了,你去MSDN翻翻。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询