この記事では、Java文字ストリームとバイトストリームの違いと使用について説明します。次のように、参照のために共有してください。
バイトストリームと文字ストリームの主な違いは、その処理方法です
ストリーム分類:
1。Javaのバイトストリーム
inputstreamはすべてのバイト入力ストリームの祖先であり、outputStreamはすべてのバイト出力ストリームの祖先です。
2。Java文字ストリーム
読者はすべての読み取り文字列入力ストリームの祖先であり、作家はすべての出力文字列の祖先です。
inputstream、outputStream、リーダー、およびライターはすべて抽象クラスです。だからあなたはただ新しいことはできません
バイトストリームが最も基本的です。 inputStreamとoutputStreamのすべてのサブクラスは、主にバイナリデータの処理に使用されます。それらはバイトで処理されますが、実際には、多くのデータはテキストです。文字ストリームの概念が提案されています。それらは、仮想マシンのエンコード、つまり文字セットを変換するために処理されます。この2つは、inputstreamReaderおよびoutputStreamWriterを介して関連しており、実際にはBYTE []と文字列を介して関連しています。
実際の開発で発生する漢字の問題は、実際には、文字ストリームとバイトストリーム間の一貫性のない変換によって引き起こされます。
バイトストリームから文字ストリームに変換する場合、実際にはバイト[]が文字列に変換されたときです。
パブリックストリング(バイトバイト[]、文字列charsetname)
キーパラメーター文字セットエンコードがあり、通常は省略されているため、システムはオペレーティングシステムラングを使用します
文字ストリームがバイトストリームに変換されると、実際には文字列がバイトに変換されたときです[]
byte [] string.getBytes(string charsetname)
同じことは、主にパフォーマンスを向上させ、利便性を使用するために、java.ioの他の多くのストリームと同じです。
など:bufferedinputStream、pipedinputStreamなど。
特定の実装
バイトストリームfileinputStream fileoutputStream
キャラクターストリーミングFileReader FileWriter
文字ストリーム処理の単位は2バイトのUnicode文字で、それぞれ文字、文字配列、または文字列を動作させますが、バイトストリーム処理の単位は1バイトで、バイトアレイとバイト配列を動作させます。したがって、文字ストリームは、バイトを2バイトのUnicode文字に変換するJava仮想マシンで構成されているため、複数の言語でよりサポートされます。オーディオファイル、画像、または曲の場合は、byteストリーミングを使用し、中国語(テキスト)に関連している場合は、文字ストリーミングを使用します。
すべてのファイルはバイトで保存されます。ディスクに保持されるのはファイルの文字ではありませんが、文字は最初にバイトにエンコードされ、次にバイトがディスクに保存されます。ファイル(特にテキストファイル)を読み取るとき、それらはバイトバイトを読み取り、バイトのシーケンスを形成します。
バイトストリームは、バイナリオブジェクトを含むあらゆるタイプのオブジェクトに使用できますが、文字ストリームは文字または文字列のみを処理できます。 2。バイトストリームは、あらゆるタイプのIO操作を処理する機能を提供しますが、文字ストリームはそれを実行できますが、Unicode文字を直接処理することはできません。
BYTEストリームは、inputSteamReader outputStreamWriterを使用して文字ストリームに変換できます
BufferdReaderに変換するBufferedWriterバッファがあります。
fileInputStream fileInputStream = new FileInputStream( "d:/text.txt"); // d:/text.txtStreamReader inputStreamReader = new inputStreamReader(FileInputStream); inputStreamReaderは、キャッシュを使用してBufferedReaderに変換します
読み取りコンテンツを文字に割り当てることができます
string ss = new String(); string s; while((s = bufferedreader.readline()) // d:/text.txt inputstreamReader inputstreamReader = new inputStreamReader(FileInputStream)を指すバイトストリームを定義します。 //バイトストリームをinputStreamReaderに変換しますBufferedReader bufferedReader = new BufferedReader(inputSteamReader); // inputStreamReaderは、キャッシュ付きのバッファレッドリーダーに変換されます。読み取りコンテンツを文字列ss = new String()に割り当てることができます。文字列s; while((s = bufferedreader.readline())!= null){ss += s; }例:バイトストリームからキャラクターストリーム出力にファイルを書き込む
fileoutputStream fileoutputStream = new FileOutputStream( "d:/text.txt"); // d:/text.txt outputStreamWriter outputStreamWriter = new OutputStreamWriter(FileOutputStream); BufferedWriter BufferedWriter = new bufferedwriter(outputStreamWriter); bufferedwriter.write(s); bufferedwriter.close(); outputstreamWriter.close(); fileoutputStream fileoutputStream = new fileoutputStream( "d:/text.txt"); // d:/text.txt OutputStreamWriter outputStreamWriter = new OutputStreamWriter(FileOutputStream); BufferedWriter BufferedWriter = new BufferedWriter(outputStreamWriter); BufferedWriter.Write(s); bufferedwriter.close(); outputStreamwriter(); cls();
ルーティーン:
文字列をバイトストリームに変換します#領域文字列をバイトストリームに変換する
/**//// <summary> ////文字列をバイトストリームに変換する/// </summary> /// <param name = "_ source"> string </param> /// <returns> byte stream </returns> public static byte [] string2bytes(string strsource){system.io.io.memorystream = memememememmeme.meme.meme.meme.memy.memy.memy.memy.memy.memy.memy.memy.memy.memome.memy.memy.memy.memy. System.io.io.binarywriter binarywriter = new System.io.binaryWriter(MemoryStream); binarywriter.write(strsource); byte [] buffer = memorystream.getBuffer();バッファーを返します;}#endregionバイトストリームを文字列に変換#regionバイトストリームを文字列に変換する
/**//// <summary> ////バイトストリームを文字列に変換する/// </summary> /// <param name = "bytdata"> byte streams </param> /// <tring> string </returns> returns> System.io.memorystream(bytdata); System.io.io.binaryReader BinaryReader = new System.io.io.binaryReader(MemoryStream2);文字列s2 = binaryreader.readstring(); s2;}#endregionを返します
この記事がみんなのJavaプログラミングに役立つことを願っています。