Fluxo de operação de dados
No pacote de OI, são fornecidos dois fluxos de operação de dados independentes da plataforma:
DatainputStream
DataOutputStream
Normalmente, o fluxo de saída de dados emite os dados em um determinado formato e, em seguida, leia os dados em um determinado formato através do fluxo de entrada de dados.
A interface dataOutputStream define uma série de operações writexxx (), que podem escrever dados de vários tipos de dados.
Exemplo: Escreva e leia dados usando fluxos de manipulação de dados
importar java.io.dataOutputStream; importar java.io.file; importar java.io.fileOutputStream; classe pública dataOutputStreamDemo {public static void main (string args []) lança exceção {// todas as exceções lançam dataOutputStream DOS = null; // Declare o arquivo de objeto de fluxo de fluxo de saída de dados F = novo arquivo ("d:" + file.separator + "order.txt"); // o caminho de salvar do arquivo DOS = new DataOutputStream (new FileOutputStream (f)); // instanciados nomes de string de fluxo de fluxo de saída de dados [] = {"camisa", "luva", "lenço"}; // Nome do produto Float preços [] = {98.3f, 30.3f, 50.5f}; // preço do produto int nums [] = {3,2,1}; // Quantidade do produto para (int i = 0; i <names.length; i ++) {// loop output dos.writechars (nomes [i]); // gravar string dos.writechar ('/t'); // escreva o separador do separador.writefloat (preços [i]); // grava o preço dos.writechar ('/t'); // escreva delimitador Dos.writeint (nums [i]); // escreva quantidade Dos.Writechar ('/n'); // newline} dos.close (); // Fechar o fluxo de saída}}; importar java.io.datainputStream; importar java.io.file; importar java.io.fileInputStream; classe pública DatainputStreamDemo {public static void main (string args []) lança exceção {// todas as exceções lançam datainputstream dis = null; // Declare o arquivo de objeto de fluxo de fluxo de dados de dados f = novo arquivo ("d:" + file.separator + "order.txt"); // o caminho de salvamento do arquivo DIS = new DataAinputStream (new FileInputStream (f)); // instanciar o nome do objeto de fluxo de entrada de dados Nome da string = null; // Receba o preço do nome da flutuação = 0,0f; // recebe preço int num = 0; // recebe quantidade char temp [] = null; // recebe o nome do produto int len = 0; // salve o número de dados de leitura char c = 0; // '/u0000' tente {while (true) {temp = new char [200]; // espaço aberto len = 0; while ((c = dis.readchar ())! = '/t') {// recebe temp de conteúdo [len] = c; Len ++; // Leia o comprimento mais 1} nome = new String (temp, 0, len); // altere a matriz de caracteres para o preço da string = dis.readfloat (); // Leia o preço Dis.readchar (); // leia /t num = Dis.ReadInt (); // leia int dis.readchar (); // leia int dis.readchar (); // leia/n System.out.printf ("Nome: %s; preço: %5.2f; quantidade: %d/n", nome, preço, num); }} catch (Exceção e) {} Dis.Close (); }};Serialização do objeto
A serialização do objeto é um método de transformar objetos em fluxos de dados binários. Através da serialização do objeto, a transmissão ou armazenamento de objetos pode ser facilmente realizada.
Se uma classe deseja suportar a inicialização, a classe deve implementar a interface java.io.Serilizable. A interface é definida da seguinte forma:
publicInterfaceSerilizable {}
Não existe um método nessa interface; portanto, essa classe pertence a uma interface de etiqueta, indicando que a classe que implementa a interface possui alguns recursos.
1. Serialização e desserialização de objetos
2.SerialversionUid
Uma constante serialversionUID é introduzida na operação de serialização. Essa constante pode ser usada para verificar a consistência da versão. Ao desapegar, a JVM comparará o serialversionuid no fluxo de bytes passado com o serialversionuid da classe correspondente local. Se o mesmo for considerado consistente, poderá ser desserializada, caso contrário, ocorrerá uma exceção com versões de serialização inconsistentes.
importar java.io.serializable; classe pública Pessoa implementaRializable {private String Name; // Declare o atributo de nome, mas esse atributo não é uma idade privada serializada; // Declare o atributo de idade PublicPerson (nome da string, Int Age) {// Defina o conteúdo construindo este.name = name; this.age = idade; } publicsTring tostring () {// substitui o método tostring () para retornar "nome:" + this.name + "; idade:" + this.age; }}; 3. Fluxo de saída do objeto: ObjectOutputStream
Se um objeto quiser produzir, ele deve usar a classe ObjectOutputStream, que é definida da seguinte forma
Se um atributo em um objeto não quiser ser serializado, ele poderá ser declarado usando a palavra -chave transitória.
importJava.io.file; importJava.io.fileOutputStream; importJava.io.OutputStream; importJava.io.ObjectOutputStream; publicClass serdemo01 {public static void main (string args []) throwsexception {arquivo f = novo arquivo ("d:" + file.separator + "test.txt"); // Defina o caminho de salvar ObjectOutputStream ooS = null; // Declare o fluxo de saída do objeto outputStream out = newFileOutputStream (f); // Stream de saída de arquivo OOS = new ObjectOutputStream (out); OOS.WriteObject (Nova pessoa ("Zhang San", 30)); // salve o objeto oos.close (); // Fechar } };4. Fluxo de entrada do objeto: ObjectInputStream
importJava.io.file; importJava.io.fileInputStream; importJava.io.inputStream; importJava.io.ObjectInputStream; publicClass serdemo02 {public static void main (string args []) throwsexception {arquivo f = novo arquivo ("d:" + file.separator + "test.txt"); // Defina o caminho salvar ObjectInputStream ois = null; // Declare o fluxo de entrada do objeto InputStream input = newFileInputStream (f); // Fluxo de entrada do arquivo OIS = new ObjectInputStream (entrada); // instanciar objeto de fluxo de entrada do objeto obj = ois.readObject (); // leia objeto ois.close (); // Close System.out.println (obj); }};6. serializar um grupo de objetos
Ao emitir um objeto, apenas uma operação de saída de objeto é fornecida (WriteObject (ObjectObJ)) e nenhum objetivo múltiplo é fornecido. Se você deseja serializar vários objetos agora, pode usar a matriz de objetos para concluí -lo. Como a matriz é um tipo de dados de referência, você pode usar diretamente o tipo de objeto para recebê -lo.
importJava.io.file; importJava.io.ioException; importJava.io.fileOutputStream; importJava.io.OutputStream; importJava.io.ObjectOutputStream; importJava.io.fileInputStream; importJava.io.inputStream; importJava.io.ObjectInputStream; publicClass serdemo05 {public static void main (string args []) throwsexception {pessoa per [] = {new Person ("Zhang San", 30), NewPerson ("Li si", 31), nova pessoa ("Wang Wu", 32)}; ser (por); Objeto o [] = (objeto []) dSer (); for (int i = 0; i <o.length; i ++) {pessoa p = (pessoa) o [i]; System.out.println (P); }} public static void Ser (object obj []) ThrowSexception {arquivo f = novo arquivo ("d:" + file.separator + "test.txt"); // Defina o caminho de salvar ObjectOutputStream ooS = null; // Declare o fluxo de saída do objeto outputStream Out = new FileOutputStream (f); // Stream de saída de arquivo OOS = new ObjectOutputStream (out); OOS.WriteObject (OBJ); // salvar objeto oos.close (); // fechar} public static objeto [] dSer () lança exceção {arquivo f = new File ("d:" + file.separator + "test.txt"); // Defina o caminho salvar ObjectInputStream ois = null; // Declare o fluxo de entrada do objeto InputStream input = newFileInputStream (f); // Fluxo de entrada do arquivo OIS = new ObjectInputStream (entrada); // instanciar o objeto de fluxo de entrada do objeto obj [] = (objeto []) ois.readObject (); // leia o objeto ois.close (); // fechar o retorno obj; }};O número de objetos que uma matriz pode armazenar é limitado, para que você possa usar conjuntos de classes para executar operações de serialização.
Fluxo comprimido
Para reduzir a quantidade de dados durante a transmissão, os fluxos compactados também são fornecidos no Java e os arquivos ou pastas podem ser compactados em zíper, jarra, gzip e outros formatos.
Esse fluxo é usado menos, portanto, apenas uma breve introdução.
Resumir
O exposto acima é todo o conteúdo deste artigo sobre o fluxo de operação de dados Java IO, serialização de objetos e análise de código de fluxo comprimido. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!