To answer your first question, "Yes". You can do one of two things without including any modules whatsoever:
The first is to use the system or backtick operators to access the native copy command on whatever system you are using. Depending on the system, it will be something like:
The second process is as you described. Read the original file, then write the new copy yourself. It won't be as fast as using a native copy, but it will do the job.