ストリームは、継続的なデータの流れです。 Java では、I/O ストリームは、入力ソースからの読み取り、またはファイルなどの出力先に書き込むために使用されます。これらは、データに順次アクセスする方法を提供します。 java.io パッケージには、バイト ストリームと文字ストリームの両方を処理するためのクラスと、それらの間の変換を行うためのクラスが含まれています。
- 入力ストリーム: ソースからデータを読み取ります。
- 出力ストリーム: データを宛先に書き込みます。
バイト ストリームではなく文字ストリームを使用する場合:
Java では、文字は Unicode 規則を使用して保存されます。文字ストリームはテキスト ファイルを処理する場合に便利です。これらのテキスト ファイルは 1 文字ずつ処理できます。文字サイズは通常 16 ビットです。
文字ストリームではなくバイト ストリームを使用する場合:
主キー複合キー
バイト指向はバイトごとに読み取ります。バイト ストリームは、バイナリ ファイルなどの生データの処理に適しています。
上記のストリームを使用および処理する際の重要なポイント:
- 通常、文字ストリーム クラスは Reader/Writer で終わりますが、バイト ストリーム クラスは InputStream/OutputStream で終わります。
- この記事のサンプル コードでは、効率が低い非バッファー ストリームを使用しています。パフォーマンスを向上させるために、通常は BufferedReader/BufferedWriter (文字ストリーム) または BufferedInputStream/BufferedOutputStream (バイト ストリーム) でラップします。
- リソースを解放してエラーを防ぐために、使用後は必ずストリームを閉じてください。
- ファイルが存在しない可能性があるため、上記のコードはオンライン コンパイラでは実行できない可能性があります。
キャラクターストリーム
Java では、文字は Unicode 規則を使用して保存されます。文字ストリームを使用すると、データを 1 文字ずつ自動的に読み書きできるようになります。たとえば、FileReader と FileWriter は、ソースから読み取り、宛先に書き込むために使用される文字ストリームです。
mysql更新参加
文字ストリーム例
Javaimport java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Initially assigning null as we have not read anything FileReader sourceStream = null; try { // Reading from file sourceStream = new FileReader('/Users/mayanksolanki/Desktop/demo.rtf'); // Reading sourcefile and writing content to target file character by character. int temp; // If there is content inside file than read while ((temp = sourceStream.read()) != -1) System.out.println((char)temp); System.out.print('Program successfully executed'); } finally { if (sourceStream != null) sourceStream.close(); } } }
出力:
コンテンツをターゲット ファイルに 1 文字ずつ書き込みます
プログラムは正常に実行されました
Javaは文字列内の文字を置換します
バイトストリーム
Java のバイト ストリームは、生の 8 ビット バイナリ データの入出力を処理するストリームです。主に、画像、オーディオ、ビデオ、バイナリ ファイルなどの非テキスト データの読み取りと書き込みに使用されます。例えば ファイル入力ストリーム はソースからの読み取りに使用され、FileOutputStream は宛先に書き込むために使用されます。
例:
Javaimport java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Initially assigning null ot objects for reading and writing to file FileInputStream sourceStream = null; FileOutputStream targetStream = null; try { // Passing the files via local directory sourceStream = new FileInputStream('/Users/mayanksolanki/Desktop/demo.rtf'); targetStream = new FileOutputStream('/Users/mayanksolanki/Desktop/democopy.rtf'); // Reading source file and writing content to file byte by byte int temp; // If there is content inside file than read while ((temp = sourceStream.read()) != -1) targetStream.write((byte)temp); System.out.print('Program successfully executed'); } // finally block that executes for sure where we are closing file connections to avoid memory leakage finally { if (sourceStream != null) sourceStream.close(); if (targetStream != null) targetStream.close(); } } }
出力:
プログラムは正常に実行されました
文字ストリームとバイトストリームの違い
| 側面 | キャラクターストリーム | バイトストリーム |
|---|---|---|
| 扱うデータ型 | 16 ビット Unicode 文字 (テキスト) | 8ビット生データ(バイナリ) |
| 授業は次で終わります | リーダー/ライター | 入力ストリーム / 出力ストリーム |
| に適しています | テキスト ファイル Unicode データ | 画像、オーディオ、ビデオのバイナリ ファイル |
| 変換 | バイトを文字に自動的に変換します | 生のバイトでは変換が機能しません |
| 例 | ファイルリーダー ファイルライター | ファイル入力ストリーム ファイル出力ストリーム |
関連記事
- Java IO - Java の入出力と例