То, что вы делаете, - это, по сути, хранение записей в файле; уже есть много механизмов для хранения структурированных данных в файлах. Если вы заинтересованы в том, чтобы делать это для обучения, то во что бы то ни стало продолжайте - но если вы просто хотите, чтобы эта проблема была решена, подумайте о том, чтобы использовать что-то вроде SQLite3 , чтобы предоставить вам хранилище.
Если вы хотите продолжить этот подход, вам нужно определить, какой размер будет использовать каждый из ваших методов, выделить часть файла для каждого из методов для обновления и убедиться, что каждый из них точно знает, где в файл - это его местоположение.
Если бы это была просто программа на C, я бы посоветовал подсчитать поля, за которые отвечает каждый метод, #define
этих размеров и #define
смещений, добавляемых к location
для каждого.
Но это не очень "Java" - вы должны иметь возможность изменять родителей, детей или добавлять новые классы полностью, не зная подробностей о других классах.
Таким образом, вы, возможно, захотите назначить один класс, отвечающий за запись структурированных данных в файлы, и запросить у каждого из участвующих классов свои данные. Пусть каждый класс возвратит массив byte
s, который они хотят записать, и пусть один мастер-класс выполняет all запись.
Объединив все свои файловые операции ввода-вывода в один класс, вы сможете в дальнейшем легче переходить на другой формат хранения, поддерживать совместимость для двух или трех предыдущих версий вашей программы или предоставлять несколько баз данных для разных нужд при развертывании.