расскажите пошагово, что происходит в каждой строке (в которой есть слово new). где байты, где символы, где происходит преобразование и каким образом? почему данные из фалйла побайтово представлены только от 0 до 255? какие из этих классов дружат и почему? почему нельзя использовать FileReader? расскажите как для полного олехандро. задача решена для меня практически на магии. помогите разобраться. все, что точно понял из 3 книг (а точнее из одной - шилдта, т.к. в остальных "сканнер"), что есть реадер - символы, а есть стреам - байты. дальше все какая-то хрень темная... flush(), буфер, поток... что-то аморфное и совсем непонятное, которое сожрало туеву хучу времени и нервных клеток, 50 запросов в гугл и никакого продвижения в понимании принципов работы этого говна. это первая тема, которая просто никак. крик души просто! где что почитать нормального теории про всю эту чушь, а не просто тупых примеров перегона в файл из фала или консоли и обратно?
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        String fileName = r.readLine(); //тут все понятно
        FileInputStream fis = new FileInputStream(fileName);
        BufferedReader br = new BufferedReader(new InputStreamReader(fis));
        ArrayList<Integer> list = new ArrayList<>(); //тут тоже
        String s; // =)
        while ((s = br.readLine()) != null) { //тут понятно