I would venture to say that the second example (not 100%) is because there is a buffer that is being filled, and only 1 (or a small number) of actual I/O being performed on each file.
The former example likely requires that the input be 'flushed' for each record from a different file, so you are getting, in essence, 1400(+) I/O operations.
Many I/O systems will pre-buffer input data because it it as efficient to read multiple sectors from a file as it is to read one sector.
Similarly, buffering output data is done again to reduce the I/O calls to the operating system.