La única forma que se me ocurre (y la unica forma que se) es copiar byte a byte (o un conjunto de ellos) mediante el FileOutputStream de un archivo.
hace tiempo escribi un
post en mi blog de como no hacerlo, pero nunca escribí de como hacerlo bien. De todas formas sirve para empezar y funciona que es lo mejor.
Tip: Al final todos son Streams, da lo mismo la fuente.
Saludos!