Вот функция, которая у меня есть:
// Read a record from the specified RandomAccessFile
public void read( RandomAccessFile file ) throws IOException {
account = file.readInt();
byte b1[] = new byte[ 15 ];
file.readFully( b1 );
firstName = new String( b1, 0 );
firstName = firstName.trim();
byte b2[] = new byte[ 15 ];
file.readFully( b2 );
lastName = new String( b2, 0 );
lastName = lastName.trim();
balance = file.readDouble();
}
Мне нужно иметь возможность читать из файла случайного доступа для одного из моих экзаменов, и приведенный выше код немного сбивает с толку.
вот что я предполагаю, происходит, буду признателен, если вы поправите меня, если я ошибаюсь.
мы берем file
и readInt
из файла и назначаем их account
. затем, я думаю, мы создаем новый байт размером 15 и читаем первое имя из файла в байт, а затем присваиваем firstname
. теперь вот что я не понимаю, что делает readFully
? и как приведенный выше код знает, что нужно перейти к следующему значению для lastName
. Проще говоря,
byte b1[] = new byte[ 15 ];
file.readFully( b1 );
firstName = new String( b1, 0 );
firstName = firstName.trim();
VS
byte b2[] = new byte[ 15 ];
file.readFully( b2 );
lastName = new String( b2, 0 );
lastName = lastName.trim();
balance = file.readDouble();
Почему это не дает того же значения? мы угадываем, какова длина каждого значения (имя, фамилия и т. д.)?