Algorytm wczytywania tego pliku jest jakiś dziwaczny (przynajmniej dla mnie) więc pewnie tam jest problem (500 ifów).
A FileReader jest tworzony tylko po to aby go zamknąć:
if (String.valueOf(sb).equals(".ma"))
{
FileReader fileReader = new FileReader(path);
fileReader.close();
}
I samo wczytywanie za pomocą załadowania całego pliku do Stringa i szukaniu po charAt już sugeruje, że coś jest nie tak. Zobacz jak się czyta pliki w najprostszy sposób:
https://javastart.pl/baza-wiedzy/darmowy-kurs-java/podstawy-jezyka/zapis-i-odczyt-z-plikow