Вот код
catch (RuntimeException e) {

            if (e.getCause() instanceof FileNotFoundException)
                System.out.println(FAILED_TO_READ);
            else if(e.getCause() instanceof FileSystemException){
                System.out.println(FAILED_TO_WRITE);
            }
                // тут код по обработке Exceptio
        }
Разве в catch не должно быть Exception? Мы ведь обрабатываем исключения типа FileNotFoundException и FileSystemException, а они относятся к типу Exception, а не к RuntimeException