На первый взгляд, я бы предположил, что StringTokenizer будет вашим другом здесь, но, имея некоторый опыт в реальной работе в бизнес-приложениях, вы, вероятно, не можете гарантировать, что Фамилия - это одно имя (т.е. кто-то с двойным фамилия в бочонке, без переноса вызовет у вас проблемы.
Если вы можете гарантировать целостность данных, ваш код будет
BufferedReader read = new BufferedReader(new FileReader("yourfile.txt"));
String line = null;
while( (line = read.readLine()) != null) {
StringTokenizer tokens = new StringTokenizer(line);
String firstname = tokens.nextToken();
...etc etc
}
Если вы не можете гарантировать целостность ваших данных, то вам нужно будет найти первый пробел и выбрать все символы перед этим в качестве фамилии, найти последний пробел и все символы после него в качестве DOB, и все, что между ними это фамилия.