When doing this sort of thing, remember it is always faster to read a chunk of data from the disk and analyze it from memory. The optimum size to read from a Windows disk (FAT32 or NTFS) is about 65,000 bytes. I usually create a set of VIs to handle the details of this chunked read, using some sort of cluster to keep track of the details (e.g. location in the file, whether or not you are at end-of-file, how much data you have unprocessed). In your case, I would read in data a chunk at a time, doing a match pattern on each chunk to find the date (pay attention to chunk boundaries, you don't want to miss the date because it is split between two chunks). After finding the date, I would read in the data a chunk at a time and process it in chunks.
You can find an example of this type of approach in the Read LVM Express VI. If you start opening front panels, you will notice a cluster called
file refs in or
file refs out. See ex_FileReadAll.vi, for example. This is the file data used by the LVM read to keep track of chunks. Processing occurs on the chunks in memory. An example would be ex_GetOneLineFromChunk.vi, which extracts a single line from the chunk. If there is not another line in the existing chunk, it fetches another chunk from the file. These VIs are found in <vi.lib>/express/express input/ExFileReadBlock.llb.
Note that some of these VIs are generic enough that you can use them in your code. Be careful to make copies and use the copies. Since these VIs are not explicitly on the palette, their interfaces may change on different LabVIEW versions. You may also want to make the info cluster into a typedef to allow easier development.
Let us know if you need more help.