Files are streams--meaning they really work like a tape deck that you can instantly move anywhere, but you still have to "press play" and consume data serially. So you can do the following:
- Move a seek pointer somewhere between 0 and the end of the file.
- Read where the seek pointer is, moving the seek pointer forward.
- Write where the seek pointer is, moving the seek pointer forward. If you keep going past the end of the file you are making the file bigger.
That's it. Well, one more thing:
- Tell the OS that the seek pointer is the new end of the file. This is a truncate and everything after the end is lost.
If you want to "delete" something in the middle or beginning of the file, you've got to rewrite the whole file - starting from the end and moving to the beginning.
So one thing that traditional files do not do well is shrink from the beginning.
So, it's hard to do an "efficient" append that shrinks the 2nd source file while stitching on the first.
It's definitely possible but you'd have to manipulate filesystem structures to do it in a way that would be worth it timewise - the filesystem strctures are the OS and filesystem-specific stuff you don't see with dir and File Exmplorer. That means each filesystem in existence--NTFS, FAT32, ext2 (Linux)--would need its own method of doing this.
I'm not aware of any Windows "stitching" utilities that exist that allow you to combine files without having space for a third file. There may be some out there, if you do find any, be very wary and test thoroughly as it's basically manipulating files in a nonstandard unsafe way and if the utility doesn't work 100% as advertised, you will lose data!