关于C#如何快速定位到二进制文件中的某一位置
其实一般的二进制文件用BinaryReader不断读取并用条件判断是否是我所需要的内容的确很快,但是如果碰到几百兆的大文件,偏偏需要的数据又在很靠后的位置,那么读取速度就...
其实一般的二进制文件用BinaryReader不断读取并用条件判断是否是我所需要的内容的确很快,但是如果碰到几百兆的大文件,偏偏需要的数据又在很靠后的位置,那么读取速度就很慢了,我希望能在搜索效率上提升,麻烦懂得高手教教我,要是有代码示例就更好了~~谢谢~~
或者,如果没有有效办法的话,我希望可以知道,如何使BinaryReader的指针快速移动指定数量的字节,但不读取文件内容(因为读取会占用时间)??谢谢~ 展开
或者,如果没有有效办法的话,我希望可以知道,如何使BinaryReader的指针快速移动指定数量的字节,但不读取文件内容(因为读取会占用时间)??谢谢~ 展开
2个回答
展开全部
用 BinaryReader 的 BaseStream.Seek(pos, SeekOrigin.Begin);
pos为文件开头开始计算的字节数,从0开始
pos为文件开头开始计算的字节数,从0开始
更多追问追答
追问
你要从0计算,问题是我根本不知道要移动多少,而且不想计数,想直接让指针从当前位置往后移动N位,应该怎么写呢?
追答
用 BaseStream.Seek(N, SeekOrigin.Begin); 就行啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
FileStream本身有seek方法可以直接移到需要的位置,这是从最早的c就有的东西。
追问
你这个方法只能由程序指定移动到哪里?问题是我根本不知道要移动多少。如果我的BinaryReader指针已经移动过了,想直接让指针从当前位置往后移动N位,应该怎么写呢?
追答
你原本只要查一下这个函数说明就能看到
public override long Seek(
long offset,
SeekOrigin origin
)
offset
类型:System.Int64
相对于 origin 的点,从此处开始查找。
origin
类型:System.IO.SeekOrigin
使用 SeekOrigin 类型的值,将开始位置、结束位置或当前位置指定为 origin 的参考点。
当前位置就是SeekOrigin.Current,指定不同的offset就行了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询