English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本教程中,我们将借助示例学习Java ObjectOutputStream及其方法。
java.io包的ObjectInputStream类可用于读取ObjectOutputStream先前编写的对象。
它进行了InputStream抽象类。
在学习ObjectInputStream类之前,请确保您了解ObjectOutputStream类。
ObjectInputStream主要用于读取ObjectOutputStream写入的数据。
基本上,ObjectOutputStream将Java对象转换为相应的流。这称为序列化。这些转换后的流可以存储在文件中,也可以通过网络传输。
现在,如果需要读取这些对象,则将使用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.
La classe ObjectInputStream fornisce implementazioni di diversi metodi presenti nella classe InputStream.
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
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.
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.
Metodo | Descrizione 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 |