Usa GeShIPara escribir objetos de manera binaria con ObjectInput/Output Stream, esta diseñada para escribir solo una vez socio, sino tendrias que reimplemantar una clase tu mismo.
/**
* @implSpec THREAD-SAFE
* @autor rub'n
*/
@Value
@Builder
}
/**
* @autor rub'n
*/
@Slf4j
public class ConObjectIOStream {
private static final String RUTA_FICHERO
= "./temporal.tmp";
private ConObjectIOStream() {
}
/**
* Para leer desde el fichero
*
* @return List<Persona>
*/
private static List<Persona> readFromFile() {
final List<Persona> listaPersona = new CopyOnWriteArrayList<>();
final Path pathAlimento = Paths.get(RUTA_FICHERO);
if(pathAlimento.toFile().exists()) {
synchronized (ConObjectIOStream.class) { //en caso de que readFrom se invoque desde un Thread()
final Object object
= ob.
readObject(); if (object instanceof Persona) {
listaPersona.add((Persona) object);
}
}
}
ob.reset();
//no hacer nada EOFException
log.error("Error al leer {}", e);
}
} else {
log.error("Error al leer del fichero {}", pathAlimento.toFile());
}
return List.
copyOf(listaPersona
) .stream()
.collect(Collectors.toList());
}
/**
* Para escribir en el fichero
*/
private static void writePersonToTempFile(final Persona ...persona) {
final Path pathTem = Paths.get(RUTA_FICHERO);
try (final OutputStream out
= Files.
newOutputStream(pathTem, StandardOpenOption.
CREATE);
synchronized (ConObjectIOStream.class) {
.forEach((Persona p) -> writeObject(ob, p));
}
ob.reset();
log.error("Error al escribir en archivo {} ", e);
}
}
try {
ob.writeObject(persona);
log.error("Error al escribir objecto {} ", e);
}
}
public static void main
(String[] args
) {
final Persona persona1 = Persona.builder()
.nombre("ruben")
.apellido("La muerte")
.correo("rrara@gmail.com")
.build();
final Persona persona2 = Persona.builder()
.nombre("El loco")
.apellido("La locura")
.correo("crazyGuy@gmail.com")
.build();
/*
* Para escribir
*/
ConObjectIOStream.writePersonToTempFile(persona1, persona2);
/*
* Leer
*/
ConObjectIOStream.readFromFile()
.forEach((Persona persona) -> log.info("Persona {}", persona));
}
}