因为你在while的控制条件里read的内容没有保存,相当于丢弃了一半的数据读文件时应该这么写:
int tmp; while((tmp = buff_in.read())!=-1){ buff_out.write(tmp); }
buff_out.write(buff_in.readAllBytes()); //直接写就行了,不需要while循环
buff_in.read() 这里,读出来之后,你没有拿数据去接住这里数据