Java ObjectInputStream

Java Objectinputstream



「ObjectOutputStream のオブジェクトを介して書き込まれた情報は、主に ObjectInputStream クラスを使用してアクセスされます。 ObjectInputStream クラスの主な目的は、ObjectOutputStream クラスを使用して生成される基本的なデータとエンティティを再構築することです。 SocketStream を使用することにより、ObjectInputStream を使用して、異なるホスト間でオブジェクトを転送することもできます。したがって、Ubuntu 20.04 システムが objectinputstream クラス オブジェクトをキャストオフしてファイル入力ストリームからデータを読み取るための役立つガイドを作成することにしました。コンソールを開くことから始めましょう。」

例 01

この記事の最初の例として、新しい Java ファイル「test.java」を作成しています。その後、同じフォルダーにテキスト ファイルも生成しました。







Java プログラムで入力ストリームのオブジェクトを読み取るには、出力ストリームをインポートする必要があります。そのため、最初に「java.io.ObjectInputStream」および「java.io.ObjectOutputStream」パッケージをインポートしています。それに伴い、データをファイルに挿入するには、「java.io.FileInputStream」と「java.io.FileInputStream」をインポートする必要があります。単一の main() 関数を保持するクラス「Main」を作成しました。



関数の実行は整数変数「d」の宣言から始まります。エラーによるプログラムの突然の終了を回避するために、Java の try-catch ステートメントを追加しました。 「try」部分は、FileOutputStream クラスによるファイル出力ストリーム オブジェクト「f」の初期化から始まります。ファイル名「new.txt」をこのオブジェクト「f」に渡しました。オブジェクト出力ストリーム「o」を作成し、ファイル オブジェクト「f」を ObjectOutputStream クラスに渡して、ファイルを出力ストリームにします。



次の行では、出力ストリーム オブジェクト「o」を介して Java 出力ストリームの writeInt() 関数を呼び出し、整数変数「d」を渡します。つまり、ファイルに保存します。 12 行目では、Java の FileInputStream クラスを使用して、ファイル「new.txt」を渡すことでファイル入力ストリーム「fs」を作成しました。つまり、既にデータが含まれています。このファイル入力ストリーム オブジェクト「fs」は、ファイル ストリームからの読み取りを有効にするために、ObjectInputStream クラスの新しく生成されたオブジェクト「os」に渡されます。 Java の「System.out」パッケージの println() 関数はキャストオフされ、オブジェクト入力ストリーム オブジェクト「os」を介して readInt() 関数を呼び出し、new.txt ファイルのデータを表示します。その後、Java のファイル処理の「close」機能を使用して、出力ストリームと入力ストリームをそれぞれのオブジェクト「o」と「os」を使用して閉じてきました。これは、他のユーザーがファイルからデータを入力または出力できないように、ストリームを閉じるために必要な手順です。 catch() ステートメント内では、getStackTrace() 関数を使用してエラーを取得し、例外変数「e」を介して画面に表示しています。このプログラムは、シェルで実行する準備ができています。





実行前に Java コード ファイルを保存し、java キーワード命令を使用して「test.java」ファイルを実行しました。それは見返りに何も返しません。また、シェル上でテキストファイル「new.txt」のデータを「cat」命令で表示すると、ガベージ値が表示されました。これは、ほとんどの場合、Java エグゼキュータがファイルから整数値を読み取ることができないためです。しかし、ほとんどの場合、正確な整数値が表示されます。



new.txt ファイルを手動で開いて確認したところ、値の Unicode 形式がファイルに表示されていることがわかりました。

ファイル ストリームから整数値を表示できない場合は、writeInt() 関数の代わりに Java プログラムで writeObject() 関数を使用して、オブジェクト「o」を介して値「d」をファイル ストリームに書き込むことができます。表示されます。それに伴い、ファイル入力ストリームからのデータを表示するには、readInt() 関数の代わりに「readObject()」関数をキャストオフする必要があります。

このコードを更新すると、実行時に整数値が表示されます。

例 02

文字列型の値のオブジェクト入力ストリームをキャストオフする Java プログラミングの別の値を用意しましょう。したがって、Java ライブラリの「io」パッケージから Java の同じ FileInputStream、FileOutputStream、ObjectInputStream、および ObjectOutputStream クラスをインポートして、このサンプル コードを開始しました。 Main クラスには、このコードの実行を開始するための main() 関数があります。文字列変数「d2」は、長い文字列値で初期化されます。

エラーを回避し、この Java コードをスムーズに実行するために、同じ try-catch ステートメントがキャストオフされています。ファイル出力ストリームのオブジェクト「f」は、引数として「new.txt」を取る FileOutputStream クラスを介して作成されています。ファイル出力ストリームオブジェクト「f」は、ObjectOutputStream クラスを使用して作成された出力ストリームオブジェクト「o」に渡されています。ここで、出力ストリーム「o」は、ファイル「new.txt」に書き込まれる文字列変数「d」を渡すことにより、writeObject() 関数を呼び出しています。

次に、FileInputStream クラスを使用してファイル入力ストリーム「fs」を作成し、ファイル名「new.txt」を渡します。つまり、そこからデータを読み取ります。ここで、ObjectInputStream クラス オブジェクト「os」は、ファイル入力ストリーム オブジェクト「fs」を使用して、「System.out」クラスの「println」実行ステートメントで java の readObject() 関数を使用してデータを読み取ります。次に、「close」関数を呼び出して入力ストリームと出力ストリームを閉じる傾向があります。catch ステートメントを使用して、try 部分で発生した例外を取得し、このプログラム実行が突然閉じられるのを回避します。

この Java コード ファイルとテキスト ファイルを実行すると、コンソールに文字列値が表示されました。

結論

ObjectInputStream クラスの使用は、Serializable または Externalizable プロトコルを使用する物質を読み取るために使用できる唯一の方法です。要約すると、Java の objectinputstream クラスを使用してファイル オブジェクト入力ストリームからデータを読み取るために必要なすべての詳細が含まれています。このために、ここでは 2 つの異なる Java コード例をキャストしています。最初の例では整数型の入力変数値を使用していますが、2 番目の図では文字列変数値をキャストオフしています。つまり、入力ファイル ストリームから読み取っています。