我想要做的是打开一个文件(这是巨大的)并从某个字节点读取到偏移量。
在c#中可以通过以下方式完成:
File.ReadAllBytes(file).Skip(50).Take(10).ToArray();
这个问题是它读取整个文件,但由于我的文件可能很多,这也需要很长时间。有没有办法读取与此方法类似但不读取整个文件的文件部分?在c中最好
答案 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);