Вы игнорируете, сколько байтов вы фактически прочитали:
while( ((read = in.read(buf,0,BUFFER_SIZE)) != -1) )
{
raf.write(buf,0,BUFFER_SIZE);
}
Ваш write
вызов всегда записывает весь буфер, даже если вы его не заполнялис вызовом read
.Вы хотите:
while ((read = in.read(buf, 0, BUFFER_SIZE)) != -1)
{
raf.write(buf, 0, read);
}