Why don't you use file copy instead?
This seems quite overly complex to copy a CR file that is already stored in the filesystem.
I don't understand the issues with converting to a string. I suspect if you have a non-text file read into a string, you have to keep it as binary.