C# 如何从x位置开始读取y值的二进制文件?
我需要从一个二进制文件中读取一定数量的短(int16)数据点,从一个特定的位置开始。谢谢 您只需在传递给BinaryReader的流上调用Seek方法,并将其传递到要开始读取的文件中的位置C# 如何从x位置开始读取y值的二进制文件?,c#,binaryreader,C#,Binaryreader,我需要从一个二进制文件中读取一定数量的短(int16)数据点,从一个特定的位置开始。谢谢 您只需在传递给BinaryReader的流上调用Seek方法,并将其传递到要开始读取的文件中的位置 然后,将流传递给BinaryReader后,您可以根据需要多次调用ReadInt16方法。类似的操作应该可以为您完成: private IEnumerable<Int16> getShorts(string fileName, int start, int count) using(var str
然后,将流传递给BinaryReader后,您可以根据需要多次调用ReadInt16方法。类似的操作应该可以为您完成:
private IEnumerable<Int16> getShorts(string fileName, int start, int count)
using(var stream = File.OpenRead(fileName))
{
stream.Seek(start);
var reader = new BinaryReader(stream);
var list = new List<int16>(count);
for(var i = 0;i<count;i++)
{
list.Add(reader.ReadInt16());
}
}
private IEnumerable getShorts(字符串文件名、int开始、int计数)
使用(var stream=File.OpenRead(文件名))
{
stream.Seek(开始);
var reader=新的二进制读取器(流);
var列表=新列表(计数);
对于(var i=0;i是否必须将start乘以2以适应由2字节值组成的文件?@mikeh,Seek
只查找给定数量的字节。因此,这实际上取决于start
的含义。在本例中,start是您希望用作起始位置的字节。如果您希望给出开始读取的短字符,则可以simply do.Seek(开始*2)