Подтвердить что ты не робот

Расширение файла для объекта Serialized

Какое расширение файла было бы наиболее подходящим при сохранении объекта Serializable на диске?

FileOutputStream fos = null;
ObjectOutputStream out = null;
try {
    fos = new FileOutputStream(filename);
    out = new ObjectOutputStream(fos);
    out.writeObject(mySerializableObject);
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    IOUtils.closeQuietly(out);
}
4b9b3361

Ответ 1

". ser" является разумным выбором для суффикса файла - http://www.file-extensions.org/ser-file-extension

Однако вы можете утверждать, что мало что влияет на то, какой суффикс вы используете... при условии, что это не противоречит другим широко используемым суффиксам приложений.

Сериализованный объектный файл Java может быть прочитан (обычным способом) только приложением Java, имеющим соответствующие классы в его пути к классам. Суффикс ".ser" с одним размером подходит не дает никаких указаний относительно того, какими могут быть эти классы и где должна быть найдена среда запуска приложения. Таким образом, вы не сможете настроить ассоциацию файлов в стиле Windows, чтобы обеспечить запуск приложения с двойным щелчком.


Есть ли способ, чтобы я мог просматривать или редактировать ser файл?

Возможно, но с большим трудом и только при определенных условиях.

Содержимое файла сильно зависит от класса, который был сериализован. Теперь можно определить, что такое имя этого класса, и (в некоторых случаях) имена и типы сериализованных полей. Однако, если класс использует пользовательскую сериализацию/экрнализацию, представление будет непрозрачным блобом двоичных данных без каких-либо подсказок в файле о том, как его декодировать. Непрозрачная проблема с блобом довольно распространена, потому что многие важные классы в библиотеке классов Java SE используют пользовательскую сериализацию... для эффективности... и, следовательно, многие классы приложений.

Другой возможный подход - найти файлы .class для всех классов, упомянутых в файле .ser, десериализовать объекты и использовать отражение для доступа к полям десериализованных объектов. Вы могли бы даже настроить их и ресериализировать. Однако, если у вас нет правильных версий всех файлов .class, это не стартер.