Почему ничего не записывает в файл?

У меня есть код который должен записывать байты с исходного файла в другой файл, но у меня он записывает только пробел.

1) Как записать все байты с исходного файла в итоговый?

2) Что означают параметры в методе write(byte[] b, int off, int len), а именно int off, int len?

    package com.javarush.task.task18.task1808;

/* 
Разделение файла
*/

import java.io.*;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        FileInputStream file1 = new FileInputStream(bf.readLine());

        FileOutputStream file3 = new FileOutputStream(bf.readLine());
        byte[] b = new byte[file1.available()];

        while (file1.available() > 0) {

            file3.write(b, 0, b.length);
        }
    }
}

Ответы (2 шт):

Автор решения: Анатолий Кравченко

Сам решил проблему, кому помог апните ответ. Буду благодарен!

package com.javarush.task.task18.task1808;

/* 
Разделение файла
*/

import java.io.*;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        FileInputStream fileInputStream = new FileInputStream(bf.readLine());;
        FileOutputStream fileOutputStream2 = new FileOutputStream(bf.readLine());

        if (fileInputStream.available() > 0) {
            //читаем весь файл одним куском
            byte[] buffer = new byte[fileInputStream.available()];
            int count = fileInputStream.read(buffer);
            fileOutputStream1.write(buffer, 0, buffer.length);;
        }
    }
}

Ответ на второй вопрос: первый параметр - откуда читаем байты, второй параметр - начальная позиция считывания байтов, третий параметр - количество, которое необходимо записать с массива buffer в файл

P.S. буду благодарен так же за критику

→ Ссылка
Автор решения: Марк Морев

FileOutputStream fileOutputStream2 = new FileOutputStream(bf.readLine())

иии строчка fileOutputStream1.write(buffer, 0, buffer.length);;

→ Ссылка