A fact that should have been mentioned in your initial post.
Again drip feeding information does not help.
Yes Serial.readString() is useless for your problem. The big problem is that it only knows data has been received when it has not received anything for a second, which is useless for what you want.
So I would crank up the baud rate and send a header byte as the first byte of your message from processing saying how many bytes are in the message up to the size of your input buffer.
Then read that many bytes, and send an acknowledge byte back to processing. If that message byte is equal to the buffer size, then processing should hold off sending any more data until it receives the acknowledge byte. If it so happens that the total message is finished at this point, then it sends the next message with a zero number of bytes header, otherwise it continues until it sends you less than a buffers worth of data.