从某个偏移量检查文件而不读取整个文件

时间:2013-11-22 09:36:05

标签: c arrays optimization byte

我想要做的是打开一个文件(这是巨大的)并从某个字节点读取到偏移量。

在c#中可以通过以下方式完成:

File.ReadAllBytes(file).Skip(50).Take(10).ToArray();

这个问题是它读取整个文件,但由于我的文件可能很多,这也需要很长时间。有没有办法读取与此方法类似但不读取整个文件的文件部分?在c中最好

1 个答案:

答案 0 :(得分:3)

是的,使用fseek()标准库函数将(“搜索”)移动到所需位置:

FILE *in = fopen("myfancyfile.dat", "rb");
if(fseek(in, 50, SEEK_SET) == 0)
{
  char buf[10];
  if(fread(buf, sizeof buf, 1, in) == 1)
  {
    /* got the data, process it here */
  }
}
fclose(in);