有没有办法从文件中读取特定的字节?
例如,我有以下代码来读取文件的所有字节
byte[] test = File.ReadAllBytes(file);
Run Code Online (Sandbox Code Playgroud)
我想读取从偏移50到偏移60的字节并将它们放在一个数组中.
Rob*_*ani 53
创建一个BinaryReader,从字节50开始读取10个字节:
byte[] test = new byte[10];
using (BinaryReader reader = new BinaryReader(new FileStream(file, FileMode.Open)))
{
reader.BaseStream.Seek(50, SeekOrigin.Begin);
reader.Read(test, 0, 10);
}
Run Code Online (Sandbox Code Playgroud)
das*_*ght 28
这应该做到这一点
var data = new byte[10];
int actualRead;
using (FileStream fs = new FileStream("c:\\MyFile.bin", FileMode.Open)) {
fs.Position = 50;
actualRead = 0;
do {
actualRead += fs.Read(data, actualRead, 10-actualRead);
} while (actualRead != 10 && fs.Position < fs.Length);
}
Run Code Online (Sandbox Code Playgroud)
完成后,data文件的偏移量为50到60之间将包含10个字节,并且actualRead将包含0到10之间的数字,表示实际读取了多少字节(当文件至少有50个但小于60个字节时,这是有意义的) .如果文件少于50个字节,您将看到EndOfStreamException.
use*_*016 11
LINQ版本:
byte[] test = File.ReadAllBytes(file).Skip(50).Take(10).ToArray();
Run Code Online (Sandbox Code Playgroud)