English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Introduzione di Base Java

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Gestione delle Eccezioni Java

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java ObjectInputStream 类

在本教程中,我们将借助示例学习Java ObjectOutputStream及其方法。

java.io包的ObjectInputStream类可用于读取ObjectOutputStream先前编写的对象。

它进行了InputStream抽象类。

在学习ObjectInputStream类之前,请确保您了解ObjectOutputStream类

ObjectInputStream的工作原理

ObjectInputStream主要用于读取ObjectOutputStream写入的数据。

基本上,ObjectOutputStream将Java对象转换为相应的流。这称为序列化。这些转换后的流可以存储在文件中,也可以通过网络传输。

现在,如果需要读取这些对象,则将使用ObjectInputStream,它将把流转换回相应的对象。这称为反序列化。

创建一个ObjectInputStream

为了创建对象输入流,我们必须首先导入java.io.ObjectInputStream包。导入包后,就可以创建输入流。

//创建与指定文件链接的文件输入流
FileInputStream fileStream = new FileInputStream(String file);
//使用文件输入流创建对象输入流
ObjectInputStream objStream = new ObjectInputStream(fileStream);

Nell'esempio sopra, abbiamo creato un flusso di input di oggetti chiamato objStream, collegato al flusso di input di file chiamato fileStream.

Ora, objStream può essere utilizzato per leggere oggetti dal file.

Metodi della classe ObjectInputStream

La classe ObjectInputStream fornisce implementazioni di diversi metodi presenti nella classe InputStream.

Metodo read()

  • read() - Leggi un byte di dati dal flusso di input

  • readBoolean() - Leggi dati come booleano

  • readChar() - Leggi dati come carattere

  • readInt() - Leggi dati come intero

  • readObject() - Leggi un oggetto dal flusso di input

Esempio 1: Java ObjectInputStream

Vediamo come utilizzare la classe ObjectInputStream per leggere oggetti creati dalla classe ObjectOutputStream.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
class Main {
    public static void main(String[] args) {
        int data1 = 5;
        String data2 = "This is w3codebox";
        try {
            FileOutputStream file = new FileOutputStream("file.txt");
            ObjectOutputStream output = new ObjectOutputStream(file);
            // Utilizzo di ObjectOutputStream per scrivere sul file
            output.writeInt(data1);
            output.writeObject(data2);
            FileInputStream fileStream = new FileInputStream("file.txt");
            // Creazione di un flusso di input di oggetti
            ObjectInputStream objStream = new ObjectInputStream(fileStream);
            // Utilizzo del metodo readInt()
            System.out.println("Dati interi: " + objStream.readInt());
            // Utilizzo del metodo readObject()
            System.out.println("Dati stringa: " + objStream.readObject());
            output.close();
            objStream.close();
        }
        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

Risultato di output

Dati interi: 5
Dati stringa: This is w3codebox

Nell'esempio sopra, abbiamo utilizzato i metodi readInt() e readObject() per leggere dati interi e oggetti dal file.

In questo esempio, abbiamo utilizzato ObjectOutputStream per scrivere dati su un file. Poi, abbiamo utilizzato ObjectInputStream per leggere dati dal file.

Esempio 2: Java ObjectInputStream

Vediamo un altro esempio pratico:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Dog implements Serializable {
    String name;
    String breed;
    public Dog(String name, String breed) {
        this.name = name;
        this.breed = breed;
    }
}
class Main {
    public static void main(String[] args) {
        //Creazione di un oggetto della classe Dog
        Dog dog = new Dog("Tyson", "Labrador");
        try {
            FileOutputStream file = new FileOutputStream("file.txt");
            //Creazione di un ObjectOutputStream
            ObjectOutputStream output = new ObjectOutputStream(file);
            //Scrittura dell'oggetto nell'output stream
            output.writeObject(dog);
            FileInputStream fileStream = new FileInputStream("file.txt");
            //Creazione di un ObjectInputStream
            ObjectInputStream input = new ObjectInputStream(fileStream);
            //Lettura dell'oggetto
            Dog newDog = (Dog) input.readObject();
            System.out.println("Nome del cane: " + newDog.name);
            System.out.println("Razza del cane: " + newDog.breed);
            output.close();
            input.close();
        }
        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

Risultato di output

Nome del cane: Tyson
Razza del cane: Labrador

Nell'esempio precedente, abbiamo creato

  •  ObjectOutputStream utilizza il FileOutputStream chiamato file come output

  •  ObjectInputStream utilizza il FileInputStream chiamato fileStream come input

  • L'oggetto della classe Dog dog

Qui, quindi, usiamo lo stream di output di oggetti per scrivere oggetti nel file. E lo stream di input di oggetti legge oggetti dal file.

AttenzioneAttenzione, qui usiamo lo stream di output di oggetti per scrivere oggetti nel file. E lo stream di input di oggetti legge oggetti dal file.

Altri metodi di ObjectInputStream

MetodoDescrizione del contenuto
available()Restituisce il numero di byte disponibili nel flusso di input
mark()Marca la posizione dei dati letti nel flusso di input
reset()Restituisce il controllo al punto del flusso di input in cui è stato impostato il segno di spunta
skipBytes()Salta e scarta i byte specificati dal flusso di input
close()Chiudi il flusso di input dell'oggetto