I need to efficiently skip lines in text file

18 views (last 30 days)
I'm reading in a formatted text data file and pulling data from it. Every so often there is a break in the data and its 4 lines long. I'm reading the lines with "fgetl" and right now to skip those lines I just use
for i = 1:4
line = fgetl(fileID);
end
This seems terribly inefficient and brute force. Is there a better way?
--Clarification The skipped lines have information in them, just information I don't use. I'm also trying to avoid saving any information temporarily for the skipped lines.
  1 Comment
Cedric
Cedric on 7 Aug 2015
Edited: Cedric on 7 Aug 2015
Could you give an example of both types of lines and define the elimination criterion?

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 7 Aug 2015
Repeated fgetl() is going to be more efficient than what the others have shown here when you are working with text files. fgetl() is a low-level routine that talks directly to the I/O stream used by the operating system libraries.
If you were working with non-text files (that is you did not use the 't' flag when you opened them) and if you knew exactly how many bytes the 4 lines occupied in total including the line delimiters, then you could fseek() forward that many bytes.

More Answers (1)

Azzi Abdelmalek
Azzi Abdelmalek on 7 Aug 2015
Edited: Azzi Abdelmalek on 7 Aug 2015
You can use textscan
fid=fopen('fic.txt');
str=textscan(fid,'%s','HeaderLines',5,'delimiter','\r\n');
fclose(fid)

Products

Community Treasure Hunt

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

Start Hunting!