ホームページ  >  記事  >  Java  >  Java言語はJAVA IOフローの本質に深く入り込みます

Java言語はJAVA IOフローの本質に深く入り込みます

黄舟
黄舟オリジナル
2016-12-17 11:29:151008ブラウズ

1.入力と出力
1.stream は、データを生成できる任意のデータ ソース、またはデータを受信できる任意の受信ソースを表します。
Java の IO では、すべてのストリーム (入力ストリームと出力ストリームを含む) には次の 2 つのタイプが含まれます:
1.1 バイト指向ストリーム
バイト指向ストリームとは、ストリームからバイトが抽出されることを意味します。ストリームに対して情報を読み書きします。バイト指向ストリームには次のタイプが含まれます:
1) 入力ストリーム:
1) ByteArrayInputStream: メモリ内のバッファを InputStream として使用します
2) StringBufferInputStream: String オブジェクトを InputStream として使用します
3) FileInputStream: ファイルをファイルの読み取り操作を実現するためのInputStream
4) PipedInputStream: 主にスレッドで使用されるパイプの概念を実装します
5) SequenceInputStream: 複数のInputStreamを1つのInputStreamにマージします
2) 出力ストリーム
1) ByteArrayOutputStream: 情報をバッファに格納しますメモリ内
2) FileOutputStream: ファイルに情報を保存します
3) PipedOutputStream: 主にスレッドで使用されるパイプの概念を実装します
4) SequenceOutputStream: 複数の OutStream をマージします これは OutStream です
1.2 Unicode 文字指向のストリーム
Unicode 文字指向ストリーム。これは、Unicode 文字の単位でストリームから情報を読み書きすることを意味します。 Unicode 文字指向ストリームには次のタイプがあります:
1) 入力ストリーム
1) CharArrayReader: ByteArrayInputStream に対応
2) StringReader: StringBufferInputStream に対応
3) FileReader: FileInputStream に対応
4) PipedReader: PipedInputStream に対応
2) Out Stream
1) CharArrayWrite: ByteArrayOutputStream に対応
2) StringWrite: 対応するバイト指向ストリームがない
3) FileWrite: FileOutputStream
に対応 4) PipedWrite: PipedOutputStream
に対応 文字ベース 指向ストリームは基本的に対応するバイト指向のストリーム。対応する 2 つのクラスで実装される機能は同じですが、操作時のガイダンスが異なります。たとえば、CharArrayReader: と ByteArrayInputStream はどちらもメモリ内のバッファを InputStream として使用します。違いは、前者は毎回メモリから 1 バイトの情報を読み取るのに対し、後者は毎回 1 文字をメモリから読み取ることです。
1.3 現在指向ではない 2 つのストリーム間の変換
InputStreamReader と OutputStreamReader: バイト指向のストリームを文字指向のストリームに変換します。
2. ストリームに属性を追加する
2.1 「ストリームに属性を追加する」の役割
上記で紹介したJavaでIOを操作するためのAPIを利用することで、任意の操作を完了させることができます。ただし、FilterInputStream と FilterOutStream のサブクラスを通じて、ストリームにプロパティを追加できます。以下は、この関数の機能を説明するための
の例です。
データをファイルに書き込みたい場合は、次のようにすることができます:
FileOutStream fs = new FileOutStream("test.txt");
その後、test.txt ファイルとの間で write() 関数を呼び出すことができます。生成されたfsオブジェクトにデータが書き込まれます。しかし、「ファイルに書き込むデータをメモリ上にキャッシュし、その後キャッシュ内のデータをファイルに書き込む」という機能を実装したい場合、上記の API ではいずれもニーズを満たすことができません。ただし、FilterInputStream と FilterOutStream のサブクラスを通じて、必要な関数を FileOutStream に追加できます。
2.2 さまざまなタイプのFilterInputStream
2.2.1 バイト指向のInputStreamをカプセル化するために使用されます
1) DataInputStream: ストリームから基本タイプ(int、charなど)のデータを読み取ります。
2) BufferedInputStream: バッファーを使用します
3) LineNumberInputStream: 入力ストリームの行数を記録し、その後 getLineNumber() と setLineNumber(int) を呼び出すことができます
4) PushbackInputStream: まれに使用され、通常はコンパイラー開発に使用されます
2.2.2 文字指向のInputStreamをカプセル化するために使用されます
1) DataInputStreamに対応するクラスはありません。 readLine()を使用するときに代わりにBufferedReaderを使用しない限り、DataInputStream
を使用してください2) BufferedReader: BufferedInputStream
に対応します3) LineNumberReader: LineNumberInputStream
に対応します4) PushBackReader: PushbackInputStream
に対応します2.3 さまざまな種類のFilterOutStream
2.2.3 カプセル化に使用されますバイト指向の OutputStream
1) DataIOutStream: 基本型 (int、char など) データをストリームに出力します。
2) BufferedOutStream: バッファーを使用します
3) PRintStream: フォーマットされた出力を生成します
2.2.4 文字指向の OutputStream をカプセル化するために使用されます
1) BufferedWrite:
2) PrintWrite:
3 に対応します ) 読み取りおよび書き込み。ファイルに対する操作は、RandomAccessFile オブジェクトを通じて完了できます
2) オブジェクトを生成するときに、開くファイルの性質を指定できます: r、読み取り専用、w、rw は読み取りと書き込みが可能です
3 ) ファイルで指定した場所に直接ジャンプできます
4. I/Oアプリケーションの例
import java.io.*;
public class TestIO{
public static void main(String[] args)
throws IOException{
//1. ファイルから行単位で読み込みます。
BufferedReader in =
new BufferedReader(
new FileReader("F:\nepalon\TestIO.java"));
String s, s2 = new String();
while((s = in.readLine()) ! = null)
s2 += s + "n";
in.close();

//1b. キーボード入力を受信します
BufferedReader stdin =
new BufferedReader(
new InputStreamReader(System.in));
System .out .println("行を入力してください:");
System.out.println(stdin.readLine());

//2. String オブジェクトからデータを読み取ります
StringReader in2 = new StringReader(s2) ;
int c ;
while((c = in2.read()) != -1)
System.out.println((char)c);
in2.close();

上記は Java、IO Streaming コンテンツ、その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。