ストリーム
1 、IOは、サマリーストリーム
デバイス間のデータ転送を処理するためのIOストリーム
アップロードとダウンロードファイル
を介してデータストリーム上のJavaオペレーション
Javaオブジェクトは、動作フローIOパッケージに使用されています
IOトラフィックの分類:
データフローによると:
(のためのメモリの点で)入力ストリーム、データが読み出されます
出力ストリーム、データ書き込み
データの種類によると:
バイトストリーム
文字ストリーム
どのような状況下での流れを利用していますか?
データを含むファイルを開き、内部の内容を読み取ることがあれば、Windowsのメモ帳を通じて文字ストリームです。他のストリームバイト。あなたは、ファイルがデフォルトのバイトストリームで使用されているかわからない場合。
IOは、共通の基本クラスをストリーム
抽象ベースクラスのバイトストリーム:のInputStream、OutputStreamの、
抽象ベースクラスの文字ストリーム:リーダー、ライター
注:これらの4つのサブクラスは、クラス名から派生して、サブクラス名の接尾辞として父親にクラス名です
以下のような:のInputStreamサブクラスのFileInputStream
以下のような:リーダーサブクラスFileReaderの
2 、バイトストリームのデータが書き込まれ、
データを書き込む:データはハードディスクにメモリから書き込まれます。OutputStream
FileOutputStream
テキストファイルに書かれた言葉:「HelloWorldの」
コンストラクタ:
FileOutputStream(ファイルのファイル)
FileOutputStream(文字列名)
メンバーの方法:
intデータ型を記述します。public void //書き込み(int型B)
公共のボイドの書き込みデータの(バイト[] b)は//バイトの書き込み[]タイプ
公共のボイドの書き込みデータの書き込み//バイト[]種類、ここで指定された開始位置と長さ(バイト[] B、int型のlenオフINT)を。
成功したデータの書き込みの後、なぜ?リリースリソースを閉じる()すべきです
データ改行を達成するためにどのように?
Windowsの場合:\ rを\ nは
Linuxの場合:\ nは
Macの場合:\ rを
追加の書き込みデータを達成するためにどのように?
コンストラクタ:たFileOutputStream(文字列 名、APPENDブール)// 2つのパラメータは、本当の最後に追加されます
3 、読み出されたデータのバイトストリーム
別のメモリ位置に、読み出したデータ。InputStream
FileInputStreamのは、ファイルを読みます
ただ、コンソールに読み出されたデータを書き込みます
FileInputStreamのコンストラクタ
FileInputStreamを(ファイルのファイル)
FileInputStreamを(文字列名)
メンバーの方法:
公共intは読んで()
公共intは読んで(バイト[] b)は
4 、バイトバッファストリーム
BufferedOutputStreamが//需要のOutputStream
BufferedInputStreamを//需要のInputStream
IO流
1 、転流(のOutputStreamWriter 、InputStreamReaderの)
なぜ、変換後の流れは以下のとおりです。バイトストリームから文字のストリームは、いわゆる変換のOutputStreamWriterの流れから変換しました。
文字ストリーム処理部は、2バイトのUnicode文字が、それぞれ、文字、文字列またはアレイの動作は、バイトストリーム処理部は、バイト、バイト、バイト配列の操作です。それは、多言語の国をサポートしていますので、だから、文字ストリームは、ユニットからUnicodeの2バイト文字にJava仮想マシンのバイト文字によって、より良いです!それは中国語(テキスト)に関連している場合、オーディオファイル、写真、歌は、バイトストリームの良いポイントを使用する場合、および文字ストリーム良い点と。
OutputStreamWriter
コンストラクタ:
公共のOutputStreamWriter(OutputStreamをアウト)、出力バイトストリームに//必要
公共のOutputStreamWriter(OutputStreamのうち、文字列たcharsetName)//出力バイトストリームのエンコードに必要
メンバーの方法:
公共のボイドの書き込み(INT C)
公共のボイドの書き込み(文字[] CBUF)
公共のボイドの書き込み(文字[] CBUF、オフint型、int型のLEN)
公共のボイドの書き込み(String str)文字
公共のボイドの書き込み(文字列str、オフint型、int型のlen)
文字が問題に注意をストリーム:
フラッシュ()アクション
フラッシュ()およびclose()の間の差
書き込みバッファが一杯になった後、フラッシュ方法は、ストリームを閉じる前に()ストリームのメソッドが閉じているクローズバッファに書き込みデータに使用されるか、または強制することができるまで、データをバッファに格納され、ストリームバッファのデータ出力は一旦バッファ性的な書き込み。二つの結果が同じであるので、フラッシュ()とclose()は、データを書き込むことを余儀なくされて書かれていない場合、あなたは書き込みに成功しないでしょう。
InputStreamReader
コンストラクタ:
公共InputStreamReaderの出力バイトストリームに(のInputStreamで)//必要性
公共InputStreamReaderの(でのInputStream、文字列たcharsetName)//出力バイトストリームのエンコードに必要
メンバーの方法:
公共intは読んで()
公共int型リード(CHAR [] CBUF)
バイトストリームと文字ストリームの違い
動作自体は、バッファ(メモリ)に使用されていないバイトストリーム、文書自体との直接操作、及び文字は、バッファにキャラクタの動作フローを使用することで、バイト動作。
操作バイトストリームファイルには、リソースが(closeメソッド)が閉じていない場合でも、ファイルを出力することができるが、近いアプローチを使用して文字列である場合、出力しない任意のコンテンツは、バッファを使用して、文字列を記載し、そして使用することができるではない場合リフレッシュバッファ(すなわち出力バッファの内容を強制)、近い場合せず、次に出力することができるコンテンツを強制的にフラッシュ法
どちらの使用:文字が文字ストリームまたはバイトストリームで、動作している場合。
2 、文字ストリーム
流れを命名することは比較的長く、そして我々の一般的な操作は、当社の書き込み流変換器が対応するサブクラスを提供簡単にするために、そう、ローカルデフォルトエンコーディングに従って実装されます。
書き込みをしてFileWriter
FileReaderを読み取り
FileWriter
コンストラクタ:
FileWriter(ファイルの ファイル) |
FileWriter(ファイルの ファイルは、APPENDブール値) |
FileWriter(ファイル記述子 FD) |
FileWriter(文字列 filename)は、 |
FileWriter(文字列 fileNameに、ブールAPPEND) |
同じメソッドとのOutputStreamWriterのメンバー
FileReaderの
コンストラクタ:
FileReaderの(ファイルの ファイル)は、 |
FileReaderの(のFileDescriptor FD) |
FileReaderの(文字列 filename)は、 |
同じメソッドとOutputStreamReaderのメンバー
3 、文字ストリームバッファ
BufferedWriterの
BufferedReaderの
特殊機能:
BufferedWriterの
空改行()//改行を書きます
BufferedReaderの
文字列のreadLine()//は、データの1行を読んで
BufferedWriterの
コンストラクタ:
BufferedWriterの(ライター OUT)は |
BufferedWriterの、(ライター OUT、int型SZ) |
メンバーの方法:
空改行()//改行を書きます
BufferedReaderの
コンストラクタ:
BufferedReaderの(リーダー で) |
BufferedReaderの(リーダー で、int型SZ)は、 |
メンバーの方法:
文字列のreadLine()//は、データの1行を読んで
4 概要:
バイトストリーム
バイトの入力ストリーム入力ストリーム
FileInputStreamを
BufferedInputStreamを
バイト出力ストリームのOutputStream
FileOutputStream
なBufferedOutputStream
文字ストリーム
文字入力ストリームリーダー
InputStreamReaderの(FileReaderの)
BufferedReaderの
文字出力ストリームライター
OutputStreamWriter(てFileWriter)
BufferedWriterの
5 、オブジェクトのシリアライズ
コンセプト
シリアル化:Javaオブジェクトをバイト列に変換する処理。
非直列化:Javaオブジェクトのバイトシーケンスのための回復プロセス。
シリアライズされたオブジェクトは、主に2つの目的があります。
1)通常のファイルに保存されている恒久的にハードディスクに保存されたターゲットバイトシーケンスを、。
ネットワーク上で送信されたバイトの2)標的配列。
ObjectOutputStreamの
オブジェクトのストリーム出力を表す、そののwriteObject(オブジェクトobj)メソッドは、オブジェクトOBJパラメーターをシリアル化することができる、目標出力ストリームに書き込まれたバイトの結果のシーケンスを指定。オブジェクトのみと外部化Serializableのインターフェイスクラスを達成するためにシリアライズされます。
ジャワの概要のObjectOutputStreamは、基本データ型にオブジェクトやグラフをOutputStreamを書きます。ObjectInputStreamのは、(再構成)オブジェクトを読み取ることができます。永続ストレージは、ストリーム内のファイルオブジェクトを使用することによって達成することができます。ストリームがネットワークソケットストリームである、または別のホスト上の他のプロセスに再配置することができる場合。
コードサンプル:
FileOutputStream fosの=新しいのFileOutputStream( "t.tmp");
ObjectOutputStreamのOOS =新しいObjectOutputStreamの(FOS);
oos.writeInt(12345)。
oos.writeObject( "今日");
oos.writeObject(新しいDate());
oos.close();
ObjectInputStreamの
オブジェクト入力ストリームを表し、それのreadObject()メソッドは、それを入力ストリームソースからバイト列を読み出し、それらオブジェクトをデシリアライズし、リターンします。
ObjectInputStreamの基礎データと事前にObjectOutputStreamを使って書かれた直列化復元オブジェクト。
コードサンプル:
FileInputStreamのFIS =新しいFileInputStreamを( "t.tmp");
ObjectInputStreamのOIS =新しいObjectInputStreamの(FIS);
私はois.readIntを()= int型。
文字列の今日=(String)をois.readObject();
日付日付=(日)ois.readObject();
)(ois.close。