Полагаю, s
- это ваша розетка. Есть несколько вещей, которые могут быть в вашем коде:
bis.available()
возвращает количество байтов, которые могут быть прочитаны без блокировки, а не общий размер файла, вы должны использовать цикл для чтения файла
- вы используете выходной поток в двух разных буферах и записываете в них оба без очистки; Кроме того, почему ты пишешь UTF?
Вот что вы намереваетесь сделать:
private void copy(InputStream in, OutputStream out) {
byte[] buf = new byte[0x1000];
int r;
while ((r = in.read(buf)) >= 0) {
out.write(b, 0, r);
}
}
InputStream in = new BufferedInputStream(new FileInputStream(path));
OutputStream out = new BufferedOutputStream(s.getOutputStream());
copy(in, out);
in.close();
out.close();