Hola:
Para que te pueda funcionar bien debes asegurarte que en el fichero todos los grupos de tres campos ocupan el mismo número de bytes para poder echar la cuenta y saber a qué posición concreta ir. Si el conjunto de 3 campos ocupa siempre 10 bytes, por decir algo, la cuenta es numeroRegistroDeseado*10. Si no es así, no puedes ubicarte en un principio de registro sin recorrer todo el fichero.
utf-8 usa en principio un byte por caracter, pero no es una norma fija. Si los caracteres son raros, como acentos, eñes o de otro idioma, el caracter puede ocuptar 2, 3 o 4 bytes
http://es.wikipedia.org/wiki/UTF-8
Así que si todos tus string son de la misma longitud y usan caracteres ascii normales, podrías hacer lo que quieres.
Se bueno.