2012-05-03 22 views
12

¿Qué extensión de archivo sería la más adecuada al guardar un objeto Serializable en el disco?Extensión de archivo para un objeto serializado

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); 
} 
+1

estoy pensando en .ser por el momento pero no en 100% – Edd

Respuesta

23

".ser" es una opción razonable para el sufijo de archivo - http://www.file-extensions.org/ser-file-extension

Sin embargo, se podría argumentar que hacen poca diferencia lo sufijo se utiliza ... siempre que es no chocar otra sufijos de aplicación comúnmente utilizados.

Un archivo de objeto serializado de Java solo puede leerse (de forma normal) mediante una aplicación Java que tenga las clases relevantes en su classpath. Un sufijo ".ser" de talla única no proporciona pistas sobre cuáles podrían ser esas clases y dónde debería encontrarlas un marco de inicio de aplicaciones. Por lo tanto, no podrá configurar una asociación de archivos al estilo de Windows para proporcionar un doble clic en el inicio de la aplicación.


¿Hay una manera que puede ver o editar el archivo Ser ??

Posiblemente, pero con gran dificultad, y solo bajo ciertas condiciones.

El contenido del archivo es altamente dependiente de la clase que fue serializada. Ahora es posible determinar cuál es el nombre de esa clase, y (en algunos casos) los nombres y tipos de los campos serializados. Sin embargo, si la clase usa serialización/externalización personalizada, la representación será una opaca cantidad de datos binarios sin pistas en el archivo sobre cómo decodificarla. El problema de blob opaco es bastante común porque muchas clases importantes en la biblioteca de clases de Java SE utilizan la serialización personalizada ... para la eficiencia ... y también lo hacen muchas clases de aplicaciones.

El otro enfoque posible es encontrar los archivos .class para todas las clases mencionadas en el archivo .ser, deserializar los objetos y usar la reflexión para acceder a los campos de los objetos deserializados. Incluso podría modificarlos y reserializarlos. Sin embargo, si no tiene las versiones correctas de todos los archivos .class, este no es un iniciador.

+0

¿Hay alguna manera de ver o editar el archivo ser? – Winz

+1

@ user1042983 En resumen, no, es una lista de objetos Java, y solo debe ser editada programáticamente por la aplicación Java que lo hizo. – Alex

Cuestiones relacionadas