Every sector on a hard drive carries error-correction data alongside its contents. When the drive reads a sector it checks one against the other, corrects small errors silently, and retries the read when it cannot: moving the head, re-reading, adjusting, sometimes for seconds. If it still cannot get a clean sector, it tells the computer, and Windows reports a cyclic redundancy check error. If the retries take longer than Windows will wait, Windows reports an I/O device error or a semaphore timeout instead. The message differs; the drive is doing the same thing.
The drive is doing that because the surface has worn or the head has weakened, and every retry is another pass of a weak head over a weak surface. Copying the file again asks the drive to do it all again. chkdsk /r asks it to do it for every sector on the drive. A drive that throws one CRC error on a Monday and is worked hard all week can be a drive that throws nothing but CRC errors by Friday.
On the bench the drive is imaged on equipment that controls how long a read may take and how many times it is retried, reads the healthy areas first at full speed, and comes back to the weak sectors last, in short passes, until they give up what they hold or are marked as lost. Where the heads themselves are the problem, they are replaced first. The file you were copying is recovered from the image, along with everything else.