Собственно вопрос не по задаче, а по пункту "Программа запускается с одним параметром - именем файла, который содержит английский текст." При указании пути к файлу через
public class Solution {
    public static void main(String[] args) throws IOException {
        FileInputStream inFile = new FileInputStream("d:\\0"); //Здесь файл с содержимым "asd"

        while (inFile.available() >0){
            System.out.println(inFile.read());
        }

        inFile.close();
    }
}
вывод корректный
"C:\Program Files\Java\jdk1.8.0_161\bin\java"
97
115
100

Process finished with exit code 0
А вот в этом случае
public class Solution {
    public static void main(String[] args) throws IOException {
        FileInputStream inFile = new FileInputStream(args[0]);

        while (inFile.available() >0){
            System.out.println(inFile.read());
        }

        inFile.close();
    }
}
Вывод в консоль такой:
"C:\Program Files\Java\jdk1.8.0_161\bin\java"
0,00

Process finished with exit code 0
Для задания параметра args[0] делал следующее:
И запускал с помощью