我想做的是打开一个文件(很大)并从某个字节点读取到一个偏移量。
在 c# 中,这可以通过以下方式完成:
File.ReadAllBytes(file).Skip(50).Take(10).ToArray();
问题在于它会读取整个文件,但由于我的文件可能很大,这也需要很长时间。有没有一种方法可以读取与此方法类似的文件的一部分,但无需读取整个文件?最好在c中
最佳答案
是的,使用 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);
关于从某个偏移量开始检查文件而不读取整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20141462/