Java ObjectInputStream クラス
Java ObjectInputStream クラス
このチュートリアルでは、例を使用して Java ObjectOutputStream とそのメソッドについて学習します。
ObjectInputStream
java.io
のクラス パッケージを使用して、以前に ObjectOutputStream
によって作成されたオブジェクトを読み取ることができます .
InputStream
を拡張します 抽象クラス。
ObjectInputStream
について学ぶ前に
ObjectInputStream の働き
ObjectInputStream
主に ObjectOutputStream
によって書き込まれたデータを読み取るために使用されます。 .
基本的には ObjectOutputStream
Java オブジェクトを対応するストリームに変換します。これはシリアル化と呼ばれます。これらの変換されたストリームは、ファイルに保存したり、ネットワーク経由で転送したりできます。
これらのオブジェクトを読み取る必要がある場合は、 ObjectInputStream
を使用します これにより、ストリームが対応するオブジェクトに変換されます。これは逆シリアル化と呼ばれます。
ObjectInputStream を作成する
オブジェクト入力ストリームを作成するには、java.io.ObjectInputStream
をインポートする必要があります 最初にパッケージ。パッケージをインポートしたら、入力ストリームを作成する方法を次に示します。
// Creates a file input stream linked with the specified file
FileInputStream fileStream = new FileInputStream(String file);
// Creates an object input stream using the file input stream
ObjectInputStream objStream = new ObjectInputStream(fileStream);
上記の例では、objStream という名前のオブジェクト入力ストリームを作成しました。 fileStream という名前のファイル入力ストリームにリンクされている .
さて、objStream
ファイルからオブジェクトを読み取るために使用できます。
ObjectInputStream のメソッド
ObjectInputStream
クラスは、InputStream
に存在するさまざまなメソッドの実装を提供します クラス。
read() メソッド
read()
- 入力ストリームから 1 バイトのデータを読み取りますreadBoolean()
- ブール形式でデータを読み取りますreadChar()
- 文字形式でデータを読み取りますreadInt()
- データを整数形式で読み取りますreadObject()
- 入力ストリームからオブジェクトを読み取ります
例 1:Java ObjectInputStream
ObjectInputStream
の使い方を見てみましょう 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 programiz";
try {
FileOutputStream file = new FileOutputStream("file.txt");
ObjectOutputStream output = new ObjectOutputStream(file);
// Writing to the file using ObjectOutputStream
output.writeInt(data1);
output.writeObject(data2);
FileInputStream fileStream = new FileInputStream("file.txt");
// Creating an object input stream
ObjectInputStream objStream = new ObjectInputStream(fileStream);
//Using the readInt() method
System.out.println("Integer data :" + objStream.readInt());
// Using the readObject() method
System.out.println("String data: " + objStream.readObject());
output.close();
objStream.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
出力
Integer data: 5 String data: This is programiz
上記の例では、readInt()
を使用しています。 と readObject()
ファイルから整数データとオブジェクト データを読み取るメソッド。
ここでは、ObjectOutputStream
を使用しています。 ファイルにデータを書き込みます。 ObjectInputStream
を使用してファイルからデータを読み取ります。 .
例 2:Java ObjectInputStream
別の実用的な例を見てみましょう。
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) {
// Creates an object of Dog class
Dog dog = new Dog("Tyson", "Labrador");
try {
FileOutputStream file = new FileOutputStream("file.txt");
// Creates an ObjectOutputStream
ObjectOutputStream output = new ObjectOutputStream(file);
// Writes objects to the output stream
output.writeObject(dog);
FileInputStream fileStream = new FileInputStream("file.txt");
// Creates an ObjectInputStream
ObjectInputStream input = new ObjectInputStream(fileStream);
// Reads the objects
Dog newDog = (Dog) input.readObject();
System.out.println("Dog Name: " + newDog.name);
System.out.println("Dog Breed: " + newDog.breed);
output.close();
input.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
出力
Dog Name: Tyson Dog Breed: Labrador
上記の例では、
ObjectOutputStream
名前付き 出力FileOutputStream
を使用して 名前付き ファイルObjectInputStream
名前付き inputFileInputStream
を使用して fileStream という名前- オブジェクト 犬 犬の クラス
ここでは、オブジェクト出力ストリームを使用してオブジェクトをファイルに書き込みました。そして、ファイルからオブジェクトを読み取るためのオブジェクト入力ストリーム。
注意 :犬 クラスは Serializable
を実装します インターフェース。 ObjectOutputStream
シリアライズ可能なオブジェクトのみを出力ストリームに書き込みます。
ObjectInputStream のその他のメソッド
メソッド | 説明 |
---|---|
available() | 入力ストリームで利用可能なバイト数を返します |
mark() | データが読み取られた入力ストリーム内の位置をマークします |
reset() | マークが設定された入力ストリーム内のポイントにコントロールを返します |
skipBytes() | 入力ストリームから指定されたバイトをスキップして破棄します |
close() | オブジェクト入力ストリームを閉じます |
詳細については、Java ObjectInputStream (公式の Java ドキュメント) にアクセスしてください。
Java