Why are you doing IO in such small odd-sized units?

Use 2048, 4096, 8192 or 16384 for the buffer size.  If the underlying streams are BufferedInputStream or BufferedOutputStream you'll bypass the buffer and avoid unnecessary copying.  If the underlying streams are disk IO streams, you'll perform roughly page sized and page aligned IOs, which makes the filesystem code in most OS kernels rather happy.

Also, there is no reason for this to be public, its only relevant to the copy method in this class.