Привет всем.
Собственно сам вопрос ниже (
вопрос), а здесь — предистория к нему.
Возникла задача — записывать и считывать объекты целиком как последовательность байтов (В С++ это у меня получалось на ура). Преимущество в том, что не приходится писать каждый член класса по отдельности. Скидываем целый объект. Реализуется это имплементированием интерфейса Serializable ( тот класс, который сбрасываем) и следующим кодом
FileOutputStream fileStream = new FileOutputStream("object.data");
ObjectOutputStream objectStream = new ObjectOutputStream(fileStream);
objectStream.writeObject(this);
Но одна проблема: у меня после записи этого класса в файле идет несколько гигов двоичной инфы. А если объект увеличится в размерах? Он уже не поместится в пространство от начала файла и до начала двоичных данных.
Вопрос: как в Java переписать часть файла (в серединке), при этом, возможно, не только overwrite' ить, но еще и добавлять инфу в серединку?
Можно ли как-нибудь вырезать часть из серединки, а затем туда вставить блок? Предоставляет ли Java какие-нибудь средства? Предупреждая гневные возгласы, скажу, что поиском я воспользовался, прочитал и про то, что в C стандартных способов нет (хотя я и писал так, открыв файл на append — a+), и про memmove.
Этот вопрос немного посложнее.
Как мне обновить запись объекта в файле? Она может увеличиться, может уменьшиться.
Можно ли, допустим, полностью удалить предыдущую запись объекта, а затем вставить новую?