• Почему функция нестабильно читает файл?

    @tupovat_bydlovat
    Понекропостчу.
    Вместо ловли еоф-эксепшона и цикла фор(;;) можно сравнить position и length стрима в качестве условия while.
    А по вопросу - вы там ловите один единственный конкретный эксепшон (ну или стопку конкретных эксепшонов) и только в нём закрываете ридер, при этом вызывая кучу всяких readInt32 и создавая попутно кучу других объектов реализация которых может так же хромать и возможно кидать эксепшоны.
    По хорошему обернуть надо в 2 юзинга, как советовали выше. Если очень хочется ловить эксепшоны - ридер закрывать надо в finally, как тоже советовали выше, а чтобы все таки с проблемой разобраться начните с ловли и логирования остальных эксепшонов, а не только проблем с правами и кривыми путями.
    Ответ написан