Run Chkdsk with the "Automatically fix file system errors" and "Scan for and attempt recovery of bad sectors" checked.
Windows will schedule the scan for the next time windows starts. It's going to take a long time to complete, but you'll know the condition of your drive better.
If you know the name of the file that is bad, rename the bad one to anything and copy in a new one. The new one will be located in a different position on the drive. Leave the bad one there forever as that sector may be weak (keep that sector occupied with something you'll never use).
If it is Chkdsk itself that can't run, boot with the XP CD, load the repair console, run Chkdsk /r from the repair console.