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

4 visualizaciones (últimos 30 días)
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

Respuesta aceptada

Walter Roberson
Walter Roberson el 6 de Mzo. de 2021
% 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

Más respuestas (0)

Categorías

Más información sobre Workspace Variables and MAT-Files en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by