UDP string

This might be a heresy but can you read the packet bytes as they arrive instead of waiting for the whole set?

It's not too hard to watch for a series of bytes arrive and then buffer only the bytes you want.

char lookFor[ ] = { 53, 54, 41, 54, 55, 53, 3a, 20, 22 }; // STATUS: "

Use a state machine to keep track of what's been matched (you might read 'S' and the next arrived not be 'T') until the lookFor string is matched and then you know that until the next ", every char you get is that file name.

Do that and you will have your data before the packet finishes sending but do get the rest to not just clear the input but also to be sure the packet is not broken or contains errors.

And a PS, set your Serial.begin() rate high so the print output buffer clears quicker. 9600 baud is very slow, if you print much then the buffer will fill and your sketch will slow down. I use 115200 baud at least for most sketches.