当前位置:编程学习 > C#/ASP.NET >>

C#有没有返回文件指针位置的函数

如题  在线等

具体情况是这样的,文件内容包含两部分A和B,先从外部设备获取A,用StreamWriter写入到文件,再获取B信息(该顺序不能颠倒),写入到文件。写完B之后,会得到一个统计信息要写到A和B之间的位置。可惜StreamWriter没有找到tell类似的函数能在写完A后返回这个指针位置,然后再写完B后通过Seek函数到这个指针位置,从A后面写入统计信息。
同志们怎么解决这样的问题呀? 查了一点资料说C#只能通过append的方式写文件,不能从中间插入,不然会覆盖后面的内容,不知道是不是。我该怎么做呢?

C# 文件 指针 --------------------编程问答-------------------- StreamWriter.BaseStream.Position --------------------编程问答-------------------- 关于文件的问题,那不是什么c#的问题。你如果了解一下文件系统的基本原理就知道,文件是基于流的,它的底层基本概念上不存在什么“中间插入”的概念。如果你要“插入”1个字节,那么你需要把B整个重新复制一遍。 --------------------编程问答--------------------
引用 楼主 zhengzheng2009 的回复:
如题  在线等

具体情况是这样的,文件内容包含两部分A和B,先从外部设备获取A,用StreamWriter写入到文件,再获取B信息(该顺序不能颠倒),写入到文件。写完B之后,会得到一个统计信息要写到A和B之间的位置。可惜StreamWriter没有找到tell类似的函数能在写完A后返回这个指针位置,然后再写完B后通过Seek函数到这个指针位置,从A后面写入统计信息。
同志们怎么解决这样的问题呀? 查了一点资料说C#只能通过append的方式写文件,不能从中间插入,不然会覆盖后面的内容,不知道是不是。我该怎么做呢?

本来就是这样,任何编程语言都没办法允许你从“中间插入”。这很好理解,文件在磁盘上是连续存储的(事实上是一个链表,但是这是文件系统层次的事情),所以要“中间插入”,只能是把这个位置后面的数据拷贝出来,腾出空间容纳插入的内容,这是非常低效的。 --------------------编程问答-------------------- 你应该自己设计合理的数据结构,使得追加在最后,程序可以仍然视作这些数据在“中间”。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,