Имеется код:
public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        FileInputStream fis = new FileInputStream(reader.readLine());
        FileWriter fos = new FileWriter(reader.readLine());
        reader.close();
        String number = "";
        while (fis.available() > 0) {
            char ch =(char) fis.read();
            if (ch != ' ') {
                number = number + ch;
            } else {
                fos.write(Integer.toString((int) Math.round(Double.parseDouble(number))));
                number = "";
                fos.write(ch);
            }
        }
        if(number.length() != 0) {
            fos.write(Integer.toString((int) Math.round(Double.parseDouble(number))));
            number = "";
        }
        fis.close();
        fos.close();
    }
Подскажите пожалуйста, как работает данный код, а именно эта часть:
String number = "";
while (fis.available() > 0) {
    char ch =(char) fis.read();
    if (ch != ' ') {
        number = number + ch;
    } else {
        fos.write(Integer.toString((int) Math.round(Double.parseDouble(number))));
        number = "";
        fos.write(ch);
    }
}
Очень сложно дается данная тема и прошу если не трудно объяснить каждую строку кода за то, что она делает и отвечает. Спасибо большое за уделенное время. И что можно посмотреть по видео с данной темой, где все станет ясно?