C#怎么样删除文本中指定的一行 30

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

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式