Тестировал со всеми вариантами содержимого файла которые смог вбить на английской раскладке, вроде всё корректно выводит и не падает.
вывод массива байт закомментирован, это я просто проверял(строка 25-26)
package com.javarush.task.task18.task1821;
/*
Встречаемость символов
*/
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
public class Solution {
public static void main(String[] args) {
try(FileInputStream file = new FileInputStream(args[0])){
int avlb = file.available();
byte[] allFileBytes = new byte[avlb];
int rd = file.read(allFileBytes);
while(rd < avlb){
int b = file.read(allFileBytes, rd,avlb - rd);
if(b != -1){
rd += b;
}else break;
}
Arrays.sort(allFileBytes);
for(byte b: allFileBytes)
System.out.print(b + " ");
int count = 1;
for(int i = 0; i < allFileBytes.length -1; i++){
if(allFileBytes[i+1] == allFileBytes[i]) count++;
else{
System.out.println((char)allFileBytes[i] + " " + count);
count = 1;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}