1.基本的な入力ストリームと出力ストリーム<br />フローは、Javaで最も重要な基本概念の1つです。ファイルの読み取りと書き込み、ネットワークの伝達と受信、プロセス通信、ストリーミングは、入力と出力が必要なほぼすべての場所で使用されます。
ストリーミングは何に使用されていますか?入力と出力用です。入力と出力が「ストリーム」を使用するのはなぜですか?プログラム入力と出力の基本単位はバイトであるため、入力はバイトの文字列を取得するためであり、出力は一連のバイトを送信することです。ただし、多くの場合、プログラムが処理前にすべてのバイトを受信することは不可能ですが、少し処理を受信することは不可能です。たとえば、World of Warcraftをダウンロードすると、すべてをメモリにダウンロードしてハードディスクに保存することは不可能ですが、ダウンロードして少し保存するだけです。現時点では、この方法は非常に適しています。
Javaでは、各ストリームはオブジェクトです。ストリームには、入力ストリーム(入力ストリーム)と出力ストリーム(出力ストリーム)の2つのタイプがあります。入力ストリームの場合、ストリームからバイトを取り出し続ける必要があります。
ストリームオブジェクトはどのように取得されますか?さまざまな外部システムには、ストリームを取得するさまざまな方法もあります。たとえば、ファイルを読み書きするときは、FileInputStream/FileOutputStreamオブジェクトを作成する必要がありますが、ネットワーク通信はソケットオブジェクトを使用して入力ストリームと出力ストリームを取得します。一般的に言えば、クラスにgetInputStream()やgetOutputStream()などのメソッドがある場合、ストリームオブジェクトを介して入力と出力であることを意味します。
inputstreamは、入力ストリームを介してファイルを読み取る例です。
java.io.io.io.io.inputStream; */ public class readfiledemo {// public static void main(string [] args){c:/boot.ini "; Try {new fileInputStream(file); BYTE [0];返品値が-1の場合、読み取るコンテンツがないことを意味します。 while(trytime!= -1){//読み取りコンテンツはバッファに配置され、コンテンツにマージします。コンテンツ= concatbytearrays(buffer、aght aghtime); printStacktrace(); {is.close(); em。最初のsizeofbytes2 bytes1とbytes2*/ private static byte [] concatbytearrays(byte [] bytes2、bytes2、int sizeofbytes2){byte [] resu lt = arrays.copyof(bytes1、(bytes1、(bytes1 。
それは非常に冗長ですが、これは実際にinputstreamの基本的な使用法です。これは、入力ストリームからバイト文字列を読み取る方法の単なる例にすぎないことに注意してください。実際、Javaはテキストファイルを読みやすい方法を提供します。後で導入されます。
OutputStream出力を使用することは、ストリームから読むよりも非常に簡単なことです。これが例です:
Import Java.io.fileoutputStream; savefiledemo {public static void main(string [] args)throws ioexception {c:/now.txt "; ()){system.err.println( "Fileは作成できません。 ).toString().getBytes()); System.out.println( "ファイルライティングが完了しました。");
Javaは他のストリーミング操作も提供しますが、それらはすべて拡張またはラッパーinputstreamとoutputStreamを提供します。したがって、これらの2つのクラスは基礎であり、理解する必要があります。
2。読者と作家
InputStreamとoutputStreamが導入され、次にリーダーとライターが導入されます。これらの2つのクラスは、実際にinputStreamとoutputStreamをラップします。ただし、バイトではなく文字を処理します。ストリーム内の内容がテキストの場合、読者/ライターで処理する方が簡単になります。これは、読者を使用してテキストファイルを読む例です。
Import java.io.io.ioexception;文字列= "/boot.ini"; read(buffer)) );} out.println(content)}
ライターを使用してテキストコンテンツをファイルに書き込む方法については、ここで自分で書いてみません。
上記の例は、テキストファイルを読む最も一般的な方法ではありません。 Javaは、通常、テキストファイルの読み取りに使用するバッファレッドリーダーを提供します。これが例です:
Import java.io.buffereder.io.io.io.ioexception; path = "/boot.ini"; {content + = "/n"; }
3。オブジェクトシリアル化<BR />オブジェクトシリアル化は、ストリーミングアプリケーションの重要な側面でもあります。シリアル化は、オブジェクトを一連のバイトに変換することであり、これを保存または使用するために別のJavaプログラムに渡すことができます。 ObjectOutputStreamおよびObjectInputStreamは、シリアル化と脱介入に特別に使用されます。簡単な例を次に示します。
Import Java.io.io.io.io.io.io.objetintStream; java.io.eofexception; *これらの2つのクラスは、それぞれシリアル化と脱介入に使用されます。 */ public class serializationdemo {public static void main(string [] args)slows {c:/persons.data "; f.createNewfile();パス);オブジェクトは指定されたファイルに保存されますprivate static void writepersons(string path)throws ioexception {person = new person [] {new Person( "Zhang San"、23)、new Person( "li si"、24)} ; objectputStrem oOS = new fileoutputStream(path){oos.writeobject(person); //////////////////////////////////////// ///////////////////////////////////////////////// ////////////////////// public Person(){string name、int age){this.name; name = name} public getage(){int age){age = age; name + '/' ' + "、age =" + age +'}}}}
この例は、両方のクラスがパッケージ化されているため、バイトや文字を読み書きすることはできません。上記は単なる簡単な例であり、シリアル化をうまく書きたい場合は、まだ注意を払うべきことがたくさんあります。シリアル化をより深く理解したい場合は、こちらで確認できます。この記事では、ストリーミングに関連する部品にのみ焦点を当てています。実際、シリアル化が柔軟性を低下させるため、シリアル化はめったに使用されないため、使用しない場合は一般的に使用されません。