IO córregos serialização e desserialização do detalhado

Serialização / desserialização

Visão geral: serializar (a serialização) é convertido em informações de estado do objecto pode ser armazenado ou transmitido sob a forma de processo.

  • Durante a serialização, o estado atual do objeto a ser escrito para uma área de armazenamento temporário ou permanente. Mais tarde, lendo ou desserializar um objeto a partir de uma área de armazenamento em um estado, re-criar o objeto.

Serialização: usando o ObjectOutputStream, informações de objecto, o formato de transferência para um valor fixo de saída e uma série de bytes para o disco de persistiu.

  • Deserialization: uso ObjectInputStream, ler os dados serializados no disco, restaurar objetos.

Aqui Insert Picture Descrição

Features / Cenário:

  • Precisa serializar o arquivo deve implementar a interface Serializable para permitir a sua função de serialização.
  • Os dados serializados podem não precisa ser modificado para ser estático, já que a estática pertencem à classe, não com os objetos de saída serializados.
  • Não requer os dados serializados também pode ser modificado para temporária transitória, durante a execução do programa, existe na memória não serão persistentes serializado.
  • Quando deserializing, e se a versão serializada é inconsistente, incapaz de completar a desserialização.
  • Cada arquivo serializado tem uma identificação única, se compilador não acrescentou gera um número de versão é calculado de acordo com as informações de definição de classe.
  • É usado para transferir dados entre servidores, arquivo serializado, ler dados desserializados.
  • Típico para fluxo de tomada de passar objetos entre hosts.

ObjectOutputStream

ObjectOutputStream

  • Objetos Java tipos primitivos de dados e gráficos escrever OutputStream. ObjectInputStream pode ler o objeto (reconstruída). armazenamento persistente pode ser conseguido através de um objeto de arquivo em um córrego.
> -- ObjectOutputStream(OutputStream out) 
          创建写入指定 OutputStream 的 ObjectOutputStream。
          
> -- void writeObject(Object obj) 
          将指定的对象写入 ObjectOutputStream。 

ObjectInputStream

ObjectInputStream

  • Dados básicos e objetos previamente escrito usando um ObjectOutputStream desserializado.
> -- ObjectInputStream(InputStream in) 
          创建从指定 InputStream 读取的 ObjectInputStream。

> -- Object readObject() 
      从 ObjectInputStream 读取对象,读取序列化数据。

A informação do estudante serializado para o disco [serialização]

public class Seri {
       public static void main(String[] args) throws Exception, IOException {
              //序列化:就是把java对象保存在磁盘中
              ObjectOutputStream os = 
                                          new ObjectOutputStream(
                                                        new FileOutputStream(                                                                      "D:\\teach\\a\\student.txt"));              
              Student s = new Student("张三",20,"成都");
              os.writeObject(s);              
              os.close();//关闭输出资源              
              //反序列化:从磁盘读到程序里
              ObjectInputStream in = 
                            new ObjectInputStream(
                                          new FileInputStream(
                                                        "D:\\teach\\a\\student.txt"));              
              //读到的对象,默认是Object,需要强转成子类
              Student s2 = (Student)in.readObject();
              System.out.println(s2);              
       }
}

//1,如果想完成序列化,类必须实现Serializable接口
//只是用来做标记,需要序列化
class  Student implements Serializable{
       //创建对象用
       public Student(String name, int age, String addr) {
              this.name = name;
              this.age = age;
              this.addr = addr;
       }
       //一般序列化的都是属性
       String name = "张三";
       int age = 20;
       String addr = "成都";       
       //为了看属性值
       @Override
       public String toString() {
              return "Student [name=" + name + ", age=" + age + ", addr=" + addr + "]";
     }       
}
Publicado 36 artigos originais · ganhou elogios 13 · vista 1063

Acho que você gosta

Origin blog.csdn.net/weixin_44598691/article/details/104777595
Recomendado
Clasificación