データ操作フロー
IOパッケージでは、2つのプラットフォームに依存しないデータ操作ストリームが提供されます。
datainputStream
DataOutputStream
通常、データ出力ストリームはデータを特定の形式で出力し、データ入力ストリームを介して特定の形式でデータを読み取ります。
DataOutputStreamインターフェイスは、さまざまなデータ型のデータを書き込むことができる一連のwritexxx()操作を定義します。
例:データ操作ストリームを使用してデータを書き込み、読み取ります
java.io.dataoutputStreamをインポートします。 java.io.fileをインポートします。 java.io.fileoutputStreamをインポートします。 public class dataoutputStreamDemo {public static void main(String args [])スロー例外{//すべての例外STOW DATAOUTPUTSTREAM dos = null; //データ出力ストリームオブジェクトファイルf = new file( "d:" + file.separator + "order.txt");を宣言します。 //ファイルの保存パスdos = new dataoutputStream(new fileoutputStream(f)); //インスタンス化されたデータ出力ストリームオブジェクト文字列名[] = {"シャツ"、 "グローブ"、 "スカーフ"}; //製品名フロート価格[] = {98.3F、30.3F、50.5F}; //製品価格int nums [] = {3,2,1}; //製品数量(int i = 0; i <names.length; i ++){// loop output dos.writechars(names [i]); //文字列dos.writeChar( '/t'); // separator dos.writefloat(rish [i])を書き込みます。 //価格dos.writechar( '/t')を書き込みます。 // delimiter dos.writeint(nums [i]); //数量dos.writechar( '/n')を書き込みます。 // newline} dos.close(); //出力ストリームを閉じる}}; java.io.datainputStreamをインポートします。 java.io.fileをインポートします。 java.io.fileinputStreamをインポートします。パブリッククラスDatainputStreamDemo {public static void main(String args [])スロー例外{//すべての例外STOW DATAINPUTSTREAM dis = null; //データ入力ストリームオブジェクトファイルf = new file( "d:" + file.separator + "order.txt");を宣言します。 //ファイルの保存パスdis = new DatainputStream(new FileInputStream(f)); //データ入力ストリームオブジェクト文字列名= nullをインスタンス化します。 // float float float = 0.0fを受信します。 //価格を受信int num = 0; //数量char temp [] = nullを受信します。 //製品名を受信int len = 0; //読み取りデータの数を保存してくださいchar c = 0; // '/u0000' try {while(true){temp = new char [200]; //オープンスペースlen = 0; while((c = dis.readchar())!= '/t'){//コンテンツtemp [len] = c; len ++; //長さと1つの読み取り1} name = new String(temp、0、len); //文字配列を文字列価格= dis.readfloat()に変更します。 //価格dis.readchar(); // read /t num = dis.readint(); // int dis.readchar(); // int dis.readchar(); // read/n system.out.printf( "name:%s; rice:%5.2f;数量:%d/n"、name、price、num); }} catch(例外e){} dis.close(); }};オブジェクトシリアル化
オブジェクトシリアル化は、オブジェクトをバイナリデータストリームに変換する方法です。オブジェクトのシリアル化により、オブジェクトの送信またはストレージを簡単に実現できます。
クラスが初期化をサポートしたい場合、クラスはjava.io.serilizableインターフェイスを実装する必要があります。インターフェイスは次のように定義されています。
publicInterFacesErizable {}
このインターフェイスにはメソッドがないため、このクラスはラベルインターフェイスに属し、インターフェイスを実装するクラスにいくつかの機能があることを示しています。
1。オブジェクトのシリアル化と脱介入
2.SerialVersionUid
SerialVersionUid定数がシリアル化操作に導入されます。この定数を使用して、バージョンの一貫性を確認できます。脱必要になると、JVMは、通過したバイトストリームのシリアルバージョン液を、ローカル対応クラスのシリアルバージョンルイドと比較します。同じことが一貫していると見なされる場合、それは偏りになる可能性があります。そうしないと、一貫性のないシリアル化バージョンの例外が発生します。
java.io.serializableをインポートします。パブリッククラスの人を実装している{private string name; //名前属性を宣言しますが、この属性はシリアル化されたプライベートインテナではありません。 //年齢属性を宣言しますpublicPerson(string name、int age){// this.name = name; this.age = age; } publicString toString(){// toString()メソッドを上書きして "name:" + this.name + "; age:" + this.age; }}; 3。オブジェクト出力ストリーム:ObjectOutputStream
オブジェクトが出力したい場合は、次のように定義されるObjectOutputStreamクラスを使用する必要があります
オブジェクト内の属性がシリアル化されたくない場合、一時的なキーワードを使用して宣言できます。
importjava.io.file; importjava.io.fileoutputStream; importjava.io.outputStream; importjava.io.objectoutputStream; publicClass serdemo01 {public static void main(string args [])throwsexception {file f = new file( "d:" + file.separator + "test.txt"); // Save Path objectputStream OOS = nullを定義します。 //オブジェクトを宣言しますoutputストリームoutputStream out = newFileOutputStream(f); //ファイル出力ストリームOOS = new objectOutputStream(out); oos.writeObject(new Person( "Zhang San"、30)); //オブジェクトを保存ooos.close(); // 近い } };4。オブジェクト入力ストリーム:ObjectInputStream
importjava.io.file; importjava.io.fileinputStream; importjava.io.inputStream; importjava.io.objectinputStream; publicClass serdemo02 {public static void main(string args [])throwsexception {file f = new file( "d:" + file.separator + "test.txt"); // Save Path ObjectInputStream ois = nullを定義します。 //オブジェクトを宣言しますinput stream inputstream input = newFileInputStream(f); //ファイル入力ストリームois = new ObjectInputStream(input); //オブジェクト入力ストリームオブジェクトをインスタンス化するobj = ois.readObject(); // Object ois.close();を読み取ります。 // system.out.println(obj)を閉じる; }};6.オブジェクトのグループをシリアル化します
オブジェクトを出力する場合、1つのオブジェクト出力操作のみが提供され(writeObject(objectobj))、複数のオブジェクトは提供されません。今すぐ複数のオブジェクトをシリアル化する場合は、オブジェクトアレイを使用して完成させることができます。配列は参照データ型であるため、オブジェクトタイプを直接使用して受信できます。
importjava.io.file; importjava.io.ioexception; importjava.io.fileoutputStream; importjava.io.outputStream; importjava.io.objectoutputStream; importjava.io.fileinputStream; importjava.io.inputStream; importjava.io.objectinputStream; publicClass serdemo05 {public static void main(string args [])throwsexception {pers per [] = {new person( "Zhang san"、30)、newserson( "li si"、31)、new person( "wang wu"、32)}; ser(per);オブジェクトo [] =(object [])dser(); for(int i = 0; i <o.length; i ++){person p =(person)o [i]; System.out.println(p); }} public static void ser(object obj [])throwsexception {file f = new file( "d:" + file.separator + "test.txt"); // Save Path objectputStream OOS = nullを定義します。 //オブジェクトを宣言しますoutputストリームoutputstream out = new fileoutputStream(f); //ファイル出力ストリームOOS = new objectOutputStream(out); oos.writeobject(obj); //オブジェクトを保存ooos.close(); // close} public static object [] dser()throws exception {file f = new file( "d:" + file.separator + "test.txt"); // Save Path ObjectInputStream ois = nullを定義します。 //オブジェクトを宣言しますinput stream inputstream input = newFileInputStream(f); //ファイル入力ストリームois = new ObjectInputStream(input); //オブジェクト入力ストリームオブジェクトをインスタンス化しますobj [] =(object [])ois.readobject(); //オブジェクトを読み取りますois.close(); // close return obj; }};配列が保存できるオブジェクトの数は限られているため、クラスセットを使用してシリアル化操作を実行できます。
圧縮ストリーム
送信中のデータの量を減らすために、圧縮されたストリームもJavaで提供され、ファイルまたはフォルダーはZIP、JAR、GZIP、その他の形式に圧縮できます。
このストリームの使用は少ないため、簡単な紹介です。
要約します
上記は、Java IOデータ操作フロー、オブジェクトシリアル化、および圧縮ストリームコード分析に関するこの記事のすべての内容です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!