querying the file size can be useful to choose the allocation size for a buffer. but yes, you have to keep reading until you get a zero-length read.
https://man7.org/linux/man-pages/man2/read.2.html
> On success, the number of bytes read is returned (zero indicates
end of file), [...] It is not an error if this number is smaller than the number of
bytes requested