Розбираємо різницю між текстовими та двійковими файлами, базові потоки байтів
InputStream/
OutputStream і їхні файлові реалізації (
FileInputStream,
FileOutputStream). Реалізуємо копіювання з буфером, обговорюємо швидкість зчитування по одному байту порівняно з блоками, запис масивів байтів через
write(), нюанси
try-with-resources, вибір розміру буфера
4–
16 КБ, безпечне використання
readAllBytes() і типові помилки (наприклад, застосування
FileReader/
FileWriter до двійкових даних).