Перезапись/вставка информации в середину файла
От: iAlexander Россия  
Дата: 28.12.04 14:05
Оценка:
Привет всем.
Собственно сам вопрос ниже (вопрос), а здесь — предистория к нему.
Возникла задача — записывать и считывать объекты целиком как последовательность байтов (В С++ это у меня получалось на ура). Преимущество в том, что не приходится писать каждый член класса по отдельности. Скидываем целый объект. Реализуется это имплементированием интерфейса Serializable ( тот класс, который сбрасываем) и следующим кодом
        FileOutputStream fileStream = new FileOutputStream("object.data");
        ObjectOutputStream objectStream = new ObjectOutputStream(fileStream);
        objectStream.writeObject(this);

Но одна проблема: у меня после записи этого класса в файле идет несколько гигов двоичной инфы. А если объект увеличится в размерах? Он уже не поместится в пространство от начала файла и до начала двоичных данных.

Вопрос: как в Java переписать часть файла (в серединке), при этом, возможно, не только overwrite' ить, но еще и добавлять инфу в серединку?
Можно ли как-нибудь вырезать часть из серединки, а затем туда вставить блок? Предоставляет ли Java какие-нибудь средства? Предупреждая гневные возгласы, скажу, что поиском я воспользовался, прочитал и про то, что в C стандартных способов нет (хотя я и писал так, открыв файл на append — a+), и про memmove.
Этот вопрос немного посложнее.
Как мне обновить запись объекта в файле? Она может увеличиться, может уменьшиться.
Можно ли, допустим, полностью удалить предыдущую запись объекта, а затем вставить новую?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.