Как заменить содержимое файла в Java? - PullRequest
1 голос
/ 12 июля 2011

Я записываю данные в файл, используя ObjectOutputStream. У меня есть класс Data, который реализует интерфейс Serializable. Этот класс имеет 4 переменных экземпляра. Я успешно могу записать данные в файл, а также прочитать его.

Когда пользователь изменяет любую переменную экземпляра этого класса, я должен записать все 4 переменные в файл еще раз. Есть ли такое решение, чтобы вместо записи всех четырех переменных в файл я просто заменил данные переменной, которая была изменена?

Вот некоторые из кодов:

public class Data implements Serializable{
     int i, j;
     String s1, s2;

}

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Вместо использования Serializable вы можете взглянуть на Externalizable, который даст вам контроль над тем, как вы записываете сериализованные данные - так вы могли бы на самом деле, если вы хотите сказать, сериализовать ваш объект в CSV-подобный формат.Если вы соедините это с разностным механизмом (сравните строку, сгенерированную из предыдущего состояния, со строкой, которая из текущего состояния вы могли бы затем использовать RandomAccessFile и записать только различия.

0 голосов
/ 12 июля 2011

Если вы только сериализуете экземпляры вашего класса, вы можете просто выбрать собственное двоичное представление и реализовать методы для хранения / загрузки объектов.Однако, если вы используете этот класс «Data» как часть, например, Java-коллекций и сериализованы как часть тех, что вам нужны, это пользовательская сериализация, посмотрите здесь:

http://java.sun.com/developer/technicalArticles/Programming/serialization/

Под заголовком:

Customize the Default Protocol
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...