システム学習Java IO(十)----バックストリームPushbackInputStream

1944 ワード

ディレクトリ:システム学習Java IO----ディレクトリ、概要
PushbackInputStreamは、InputStreamからデータを解析する際に使用することを目的としています.現在のバイトをどのように解釈するかを判断するには、いくつかのバイトを読み込んでから、PushbackInputStreamで許可する必要がある場合があります.実際には、読み出したバイトをストリームに戻すことができます.これにより、ストリームが受動的ではなく、次回read()が呼び出されると、再び再読み込みされます.通俗的に言えば、男が女に「私は見ているだけで、手を出さない」と言ったようなものだ.
コンストラクタ
  • PushbackInputStream(InputStream in):入力ストリームinからPushbackInputStreamを作成します.
  • PushbackInputStream(InputStreamin,int size):指定したsizeを使用して作成され、sizeはプッシュバックバッファのサイズを表します.
  • 簡単なPushbackInputStreamの例です.
    PushbackInputStream input = new PushbackInputStream(new FileInputStream("c:\\data\\input.txt"));
    int data = input.read();
    input.unread(data);
    

    read()への呼び出しは、InputStreamから1バイトを読み出すのと同じです.unread()への呼び出しは、PushbackInputStreamに1バイトを戻します.次にread()を呼び出すと、最初に戻されたバイトが読み出されます.複数バイトが戻されると、スタック上のように、返された最新のワード・セクションが最初にread()から返されます.
    フィールドの概要
    ストリーム自体はフォールバック機能をサポートしておらず、PushBackInputStreamの内部にはbyte配列が維持されてフォールバック動作を実現している.protected byte[] bufはバッファをフォールバックする.protected int posはバッファ内の位置をフォールバックし、その位置の次のバイトを読み取る.
    PushbackInputStreamの後押し制限の設定
    PushbackInputStreamのコンストラクタで読み取り可能なバイト数を設定できます.次に、PushbackInputStreamコンストラクタでロールバック制限を設定する方法を示します.
    int pushbackLimit = 8;
    PushbackInputStream input = new PushbackInputStream(
                                    new FileInputStream("c:\\data\\input.txt"),
                                    pushbackLimit);
    

    この例では、8バイトの内部バッファを設定します.これは、最大8バイトを一度に読み取り、プッシュバックできることを意味します.
    メソッドの概要
    方法
    説明
    int read(byte[] b, int off, int len)
    この入力ストリームから最大len個のデータバイトがbyte配列に読み込まれます.
    void unread(byte[] b)
    byte配列を戻す:バッファを戻す前にコピーします.
    void unread(int b)
    ≪バイトを戻す|Push Byte|emdw≫:バッファを戻す前にコピーします.
    void mark(int readlimit)
    現在の位置をマークします.ByteInputStreamと同様に、このようなmark()メソッドでは何も実行されません.
    void reset()
    このようなreset()メソッドは、アクションを実行せずにIOExceptionのみを放出します.呼び出しは例外です.