I need to efficiently skip lines in text file

54 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)

Categories

Find more on Data Import and Export in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!