一个文件指针操作的问题

cngift 2002-04-24 06:00:58
请问:我要向一个文件的第50行写入一行字串,我要如何将文件打开后指针的起始位置就在这行呢?

如果实现不了,就算其他办法能写入文件的第50行也可以(其实是指随意写入文件的任何位置)

这要求不过份吧...
...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqchen79 2002-04-27
  • 打赏
  • 举报
回复
配置文件?INI还是XML?
如果是XML的话,最好的办法是用XmlSerialization,方便多了。
如果必须用文件读取的话,也是先全部读到内存里在处理比较好。
cngift 2002-04-27
  • 打赏
  • 举报
回复
多谢了!看来只能这么做了!给分了!
cngift 2002-04-26
  • 打赏
  • 举报
回复
to qqchen79(知秋一叶)

1.看来我没说清楚:其实现在是这样,我有一个配置文件,比如有100行,需要向其中写入一些新的信息,但是必须写入某个标识下面,而次此标识在第50行,也就是说我要从第50行写起,如何实现会比较方便

2.我说的就是追加......:)
qqchen79 2002-04-26
  • 打赏
  • 举报
回复
>> 不能设置文件起始读取写入的位置吗?很多语言都有啊,基本要求嘛
“位置”和“行”是两个完全不同的概念。
如果说定位到文件的第n各字节位置,那时可以的:FileStream::Seek/Position可以做到;但如果说是“行”就不行了,行是根据"\n"或者"\r\n"区分的,不读到n次这些字符,怎么可能知道那历史第n行的开始呢?据我所知,C/C++里好像也没有直接实现这种要求的方法吧?

>> 不过,写入倒是可以不覆盖的...
一般“写”只可能有两种模式,1) 覆盖写,即覆盖原先的内容。2) 追加写,即在原先的内容之后添加新的内容,原来的内容保留。
如果要实现插入写,那么底层的系统必须负责把插入点之后的内容整体移动,处于效率的关系,不太会有语言实现这种操作。
FileStream好像是没有的,不知道你说的方法是哪一个...
thebear810611 2002-04-25
  • 打赏
  • 举报
回复
楼上的,怎么写入不覆盖呢?
cngift 2002-04-25
  • 打赏
  • 举报
回复
不能设置文件起始读取写入的位置吗?很多语言都有啊,基本要求嘛

C#竟然没有,令人faint!

不过,写入倒是可以不覆盖的...
cngift 2002-04-25
  • 打赏
  • 举报
回复
追加啊,你看他重载的方法有一个要求2个参数的啊,第2个是布尔值的那个
qqchen79 2002-04-24
  • 打赏
  • 举报
回复
过分了:)
没有任何办法不读取文件内容而将文件指针移动到第50“行”。
所以,解决的办法只能是一行一行的读,到第50行。
而且,写如也只能是覆盖,如果要插入,只能把整个文件读出来了。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧