fread does not return the required length of data for large file.

3 次查看(过去 30 天)
Hi I aim to read a region of data from a large file in binary mode, but the returned vector is of wrong length.
% a file of 3GB
aRefGenomeFaFile = 'F:\GWAS\hg19.fa';
fid = fopen(aRefGenomeFaFile,'rb+');
% read a region of 1070 bytes that skips the first 249250621 bytes
a = fread(fid,[1,1070],'uint8',249250621);
% result: a is 1x13 double, not the expected length of 1070
% try another skip length 49250621
fid = fopen(aRefGenomeFaFile,'rb+');
a = fread(fid,[1,1070],'uint8',49250621);
%result: a is 1x64 double, not the expected length of 1070
Is there something wrong with reading?
Thanks

采纳的回答

Walter Roberson
Walter Roberson 2021-3-6
% read a region of 1070 bytes that skips the first 249250621 bytes
a = fread(fid,[1,1070],'uint8',249250621);
Nooo! That means to skip that many bytes between every value! Such as you might use if you were reading rows of a 249250621 by 1070 matrix!
Ifyou want to skip to a starting position then fseek() that many bytes relative to 'bof' and do not use a skip on the fread

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Behavior and Psychophysics 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by