Java ObjectOutputStream クラス
Java ObjectOutputStream クラス
このチュートリアルでは、例を使用して Java ObjectOutputStream とそのメソッドについて学習します。
ObjectOutputStream
java.io
のクラス パッケージを使用して、ObjectInputStream
で読み取れるオブジェクトを作成できます .
OutputStream
を拡張します 抽象クラス。
ObjectOutputStream の働き
基本的に、ObjectOutputStream
クラス名とオブジェクト値を使用して Java オブジェクトをエンコードします。したがって、対応するストリームを生成します。このプロセスはシリアル化と呼ばれます。
これらの変換されたストリームはファイルに保存でき、ネットワーク間で転送できます。
注意 :ObjectOutputStream
クラスは Serializable
を実装するオブジェクトのみを書き込みます インターフェース。これは、ストリームへの書き込み中にオブジェクトをシリアル化する必要があるためです
ObjectOutputStream を作成する
オブジェクト出力ストリームを作成するには、java.io.ObjectOutputStream
をインポートする必要があります 最初にパッケージ。パッケージをインポートしたら、出力ストリームを作成する方法を次に示します。
// Creates a FileOutputStream where objects from ObjectOutputStream are written
FileOutputStream fileStream = new FileOutputStream(String file);
// Creates the ObjectOutputStream
ObjectOutputStream objStream = new ObjectOutputStream(fileStream);
上記の例では、objStream という名前のオブジェクト出力ストリームを作成しました。 fileStream という名前のファイル出力ストリームにリンクされている .
ObjectOutputStream のメソッド
ObjectOutputStream
クラスは、OutputStream
に存在するさまざまなメソッドの実装を提供します クラス。
write() メソッド
write()
- 出力ストリームに 1 バイトのデータを書き込みますwriteBoolean()
- ブール形式でデータを書き込みますwriteChar()
- 文字形式でデータを書き込みますwriteInt()
- データを整数形式で書き込みますwriteObject()
- オブジェクトを出力ストリームに書き込みます
例 1:Java ObjectOutputStream
ObjectOutputStream
の使い方を見てみましょう オブジェクトをファイルに保存し、ObjectInputStream
ファイルからそれらのオブジェクトを読み取る
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");
// Creates an ObjectOutputStream
ObjectOutputStream output = new ObjectOutputStream(file);
// writes objects to output stream
output.writeInt(data1);
output.writeObject(data2);
// Reads data using the ObjectInputStream
FileInputStream fileStream = new FileInputStream("file.txt");
ObjectInputStream objStream = new ObjectInputStream(fileStream);
System.out.println("Integer data :" + objStream.readInt());
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 ObjectOutputStream
別の例を見てみましょう。
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 dog1 = new Dog("Tyson", "Labrador");
try {
FileOutputStream fileOut = new FileOutputStream("file.txt");
// Creates an ObjectOutputStream
ObjectOutputStream objOut = new ObjectOutputStream(fileOut);
// Writes objects to the output stream
objOut.writeObject(dog1);
// Reads the object
FileInputStream fileIn = new FileInputStream("file.txt");
ObjectInputStream objIn = new ObjectInputStream(fileIn);
// Reads the objects
Dog newDog = (Dog) objIn.readObject();
System.out.println("Dog Name: " + newDog.name);
System.out.println("Dog Breed: " + newDog.breed);
objOut.close();
objIn.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
出力
Dog Name: Tyson Dog Breed: Labrador
上記の例では、
ObjectOutputStream
objOut という名前FileOutputStream
を使用して fileOut という名前ObjectInputStream
objIn という名前FileInputStream
を使用して fileIn という名前 .- オブジェクト dog1 犬の クラス。
ここでは、オブジェクト出力ストリームを使用してオブジェクトをファイルに書き込みました。そして、ファイルからオブジェクトを読み取るためのオブジェクト入力ストリーム。
注意 :犬 クラスは Serializable
を実装します インターフェース。 ObjectOutputStream
シリアル化できるオブジェクトのみを出力ストリームに書き込みます。
ObjectOutputStream のその他のメソッド
メソッド | 説明 |
---|---|
flush() | 出力ストリームからすべてのデータを消去します |
drain() | バッファリングされたすべてのデータを出力ストリームに入れます |
close() | 出力ストリームを閉じます |
詳細については、Java ObjectOutputStream (公式の Java ドキュメント) にアクセスしてください。
Java