ObjectOutputStream
ObjectOutputStream записывает примитивные типы данных и графики Java
объекты в OutputStream. Объекты могут быть прочитаны (восстановлены)
используя ObjectInputStream. Постоянное хранение объектов может быть
достигается с помощью файла для потока. Если поток
сетевой сокет потока, объекты могут быть восстановлены на другом
хост или другой процесс.
Только объекты, которые поддерживают интерфейс java.io.Serializable
записано в потоки. Класс каждого сериализуемого объекта кодируется
в том числе имя класса и подпись класса, значения
поля и массивы объекта, а также закрытие любых других объектов
ссылка на исходные объекты.
Метод writeObject используется для записи объекта в поток. любой
Объект, включая строки и массивы, записывается с помощью writeObject.
Несколько объектов или примитивов могут быть записаны в поток.
объекты должны быть прочитаны обратно из соответствующего ObjectInputstream
с теми же типами и в том же порядке, в котором они были написаны.
Примитивные типы данных также могут быть записаны в поток с помощью
соответствующие методы из DataOutput. Строки также могут быть написаны с использованием
метод writeUTF.
ObjectInputStream
ObjectInputStream десериализует примитивные данные и объекты
ранее написано с использованием ObjectOutputStream.
ObjectOutputStream и ObjectInputStream могут предоставить приложение
с постоянным хранилищем для графиков объектов при использовании с
FileOutputStream и FileInputStream соответственно. ObjectInputStream
используется для восстановления этих объектов, ранее сериализованных. Другое использование
включать передачу объектов между хостами с использованием потока сокетов или для
маршалинг и демаршалинг аргументов и параметров в удаленном
система связи.
ObjectInputStream гарантирует, что типы всех объектов в графе
созданные из потока соответствуют классам, присутствующим в Java Virtual
Машина. Классы загружаются по мере необходимости с использованием стандартных механизмов.
Например, Я могу сохранить генератор ключей для шифрования данных следующим образом:
public static void saveKeyToFile(SecretKey key)
throws FileNotFoundException, IOException {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(
"/path/to/mysavedobject"));
oos.writeObject(key);
oos.close();
}
public static SecretKey getKeyFromFile(String dir) throws IOException,
ClassNotFoundException {
if (dir == null) {
dir = "/path/to/mysavedobject";
}
SecretKey key = null;
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
dir));
key = (SecretKey) ois.readObject();
ois.close();
return key;
}