public interface BufferedSource extends Source
| Modifier and Type | Method and Description | 
|---|---|
| Buffer | buffer()Returns this source's internal buffer. | 
| boolean | exhausted()Returns true if there are no more bytes in this source. | 
| long | indexOf(byte b)Equivalent to  indexOf(b, 0). | 
| long | indexOf(byte b,
       long fromIndex)Returns the index of the first  bin the buffer at or afterfromIndex. | 
| long | indexOf(byte b,
       long fromIndex,
       long toIndex)Returns the index of  bif it is found in the range offromIndexinclusive
 totoIndexexclusive. | 
| long | indexOf(ByteString bytes)Equivalent to  indexOf(bytes, 0). | 
| long | indexOf(ByteString bytes,
       long fromIndex)Returns the index of the first match for  bytesin the buffer at or afterfromIndex. | 
| long | indexOfElement(ByteString targetBytes)Equivalent to  indexOfElement(targetBytes, 0). | 
| long | indexOfElement(ByteString targetBytes,
              long fromIndex)Returns the first index in this buffer that is at or after  fromIndexand that contains
 any of the bytes intargetBytes. | 
| InputStream | inputStream()Returns an input stream that reads from this source. | 
| boolean | rangeEquals(long offset,
           ByteString bytes)Returns true if the bytes at  offsetin this source equalbytes. | 
| boolean | rangeEquals(long offset,
           ByteString bytes,
           int bytesOffset,
           int byteCount)Returns true if  byteCountbytes atoffsetin this source equalbytesatbytesOffset. | 
| int | read(byte[] sink)Removes up to  sink.lengthbytes from this and copies them intosink. | 
| int | read(byte[] sink,
    int offset,
    int byteCount)Removes up to  byteCountbytes from this and copies them intosinkatoffset. | 
| long | readAll(Sink sink)Removes all bytes from this and appends them to  sink. | 
| byte | readByte()Removes a byte from this source and returns it. | 
| byte[] | readByteArray()Removes all bytes from this and returns them as a byte array. | 
| byte[] | readByteArray(long byteCount)Removes  byteCountbytes from this and returns them as a byte array. | 
| ByteString | readByteString()Removes all bytes bytes from this and returns them as a byte string. | 
| ByteString | readByteString(long byteCount)Removes  byteCountbytes from this and returns them as a byte string. | 
| long | readDecimalLong()Reads a long from this source in signed decimal form (i.e., as a string in base 10 with
 optional leading '-'). | 
| void | readFully(Buffer sink,
         long byteCount)Removes exactly  byteCountbytes from this and appends them tosink. | 
| void | readFully(byte[] sink)Removes exactly  sink.lengthbytes from this and copies them intosink. | 
| long | readHexadecimalUnsignedLong()Reads a long form this source in hexadecimal form (i.e., as a string in base 16). | 
| int | readInt()Removes four bytes from this source and returns a big-endian int. | 
| int | readIntLe()Removes four bytes from this source and returns a little-endian int. | 
| long | readLong()Removes eight bytes from this source and returns a big-endian long. | 
| long | readLongLe()Removes eight bytes from this source and returns a little-endian long. | 
| short | readShort()Removes two bytes from this source and returns a big-endian short. | 
| short | readShortLe()Removes two bytes from this source and returns a little-endian short. | 
| String | readString(Charset charset)Removes all bytes from this, decodes them as  charset, and returns the string. | 
| String | readString(long byteCount,
          Charset charset)Removes  byteCountbytes from this, decodes them ascharset, and returns the
 string. | 
| String | readUtf8()Removes all bytes from this, decodes them as UTF-8, and returns the string. | 
| String | readUtf8(long byteCount)Removes  byteCountbytes from this, decodes them as UTF-8, and returns the string. | 
| int | readUtf8CodePoint()Removes and returns a single UTF-8 code point, reading between 1 and 4 bytes as necessary. | 
| String | readUtf8Line()Removes and returns characters up to but not including the next line break. | 
| String | readUtf8LineStrict()Removes and returns characters up to but not including the next line break. | 
| String | readUtf8LineStrict(long limit)Like  readUtf8LineStrict(), except this allows the caller to specify the longest
 allowed match. | 
| boolean | request(long byteCount)Returns true when the buffer contains at least  byteCountbytes, expanding it as
 necessary. | 
| void | require(long byteCount)Returns when the buffer contains at least  byteCountbytes. | 
| int | select(Options options)Finds the first string in  optionsthat is a prefix of this buffer, consumes it from
 this buffer, and returns its index. | 
| void | skip(long byteCount)Reads and discards  byteCountbytes from this source. | 
Buffer buffer()
boolean exhausted()
           throws IOException
IOExceptionvoid require(long byteCount)
      throws IOException
byteCount bytes. Throws an
 EOFException if the source is exhausted before the required bytes can be read.IOExceptionboolean request(long byteCount)
         throws IOException
byteCount bytes, expanding it as
 necessary. Returns false if the source is exhausted before the requested bytes can be read.IOExceptionbyte readByte()
       throws IOException
IOExceptionshort readShort()
         throws IOException
   Buffer buffer = new Buffer()
       .writeByte(0x7f)
       .writeByte(0xff)
       .writeByte(0x00)
       .writeByte(0x0f);
   assertEquals(4, buffer.size());
   assertEquals(32767, buffer.readShort());
   assertEquals(2, buffer.size());
   assertEquals(15, buffer.readShort());
   assertEquals(0, buffer.size());
 IOExceptionshort readShortLe()
           throws IOException
   Buffer buffer = new Buffer()
       .writeByte(0xff)
       .writeByte(0x7f)
       .writeByte(0x0f)
       .writeByte(0x00);
   assertEquals(4, buffer.size());
   assertEquals(32767, buffer.readShortLe());
   assertEquals(2, buffer.size());
   assertEquals(15, buffer.readShortLe());
   assertEquals(0, buffer.size());
 IOExceptionint readInt()
     throws IOException
   Buffer buffer = new Buffer()
       .writeByte(0x7f)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x0f);
   assertEquals(8, buffer.size());
   assertEquals(2147483647, buffer.readInt());
   assertEquals(4, buffer.size());
   assertEquals(15, buffer.readInt());
   assertEquals(0, buffer.size());
 IOExceptionint readIntLe()
       throws IOException
   Buffer buffer = new Buffer()
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0x7f)
       .writeByte(0x0f)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00);
   assertEquals(8, buffer.size());
   assertEquals(2147483647, buffer.readIntLe());
   assertEquals(4, buffer.size());
   assertEquals(15, buffer.readIntLe());
   assertEquals(0, buffer.size());
 IOExceptionlong readLong()
       throws IOException
   Buffer buffer = new Buffer()
       .writeByte(0x7f)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x0f);
   assertEquals(16, buffer.size());
   assertEquals(9223372036854775807L, buffer.readLong());
   assertEquals(8, buffer.size());
   assertEquals(15, buffer.readLong());
   assertEquals(0, buffer.size());
 IOExceptionlong readLongLe()
         throws IOException
   Buffer buffer = new Buffer()
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0xff)
       .writeByte(0x7f)
       .writeByte(0x0f)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00)
       .writeByte(0x00);
   assertEquals(16, buffer.size());
   assertEquals(9223372036854775807L, buffer.readLongLe());
   assertEquals(8, buffer.size());
   assertEquals(15, buffer.readLongLe());
   assertEquals(0, buffer.size());
 IOExceptionlong readDecimalLong()
              throws IOException
   Buffer buffer = new Buffer()
       .writeUtf8("8675309 -123 00001");
   assertEquals(8675309L, buffer.readDecimalLong());
   assertEquals(' ', buffer.readByte());
   assertEquals(-123L, buffer.readDecimalLong());
   assertEquals(' ', buffer.readByte());
   assertEquals(1L, buffer.readDecimalLong());
 NumberFormatException - if the found digits do not fit into a long or a decimal
 number was not present.IOExceptionlong readHexadecimalUnsignedLong()
                          throws IOException
   Buffer buffer = new Buffer()
       .writeUtf8("ffff CAFEBABE 10");
   assertEquals(65535L, buffer.readHexadecimalUnsignedLong());
   assertEquals(' ', buffer.readByte());
   assertEquals(0xcafebabeL, buffer.readHexadecimalUnsignedLong());
   assertEquals(' ', buffer.readByte());
   assertEquals(0x10L, buffer.readHexadecimalUnsignedLong());
 NumberFormatException - if the found hexadecimal does not fit into a long or
 hexadecimal was not found.IOExceptionvoid skip(long byteCount) throws IOException
byteCount bytes from this source. Throws an
 EOFException if the source is exhausted before the
 requested bytes can be skipped.IOExceptionByteString readByteString() throws IOException
IOExceptionByteString readByteString(long byteCount) throws IOException
byteCount bytes from this and returns them as a byte string.IOExceptionint select(Options options) throws IOException
options that is a prefix of this buffer, consumes it from
 this buffer, and returns its index. If no byte string in options is a prefix of this
 buffer this returns -1 and no bytes are consumed.
 This can be used as an alternative to readByteString() or even readUtf8() if
 the set of expected values is known in advance. 
   Options FIELDS = Options.of(
       ByteString.encodeUtf8("depth="),
       ByteString.encodeUtf8("height="),
       ByteString.encodeUtf8("width="));
   Buffer buffer = new Buffer()
       .writeUtf8("width=640\n")
       .writeUtf8("height=480\n");
   assertEquals(2, buffer.select(FIELDS));
   assertEquals(640, buffer.readDecimalLong());
   assertEquals('\n', buffer.readByte());
   assertEquals(1, buffer.select(FIELDS));
   assertEquals(480, buffer.readDecimalLong());
   assertEquals('\n', buffer.readByte());
 IOExceptionbyte[] readByteArray()
              throws IOException
IOExceptionbyte[] readByteArray(long byteCount)
              throws IOException
byteCount bytes from this and returns them as a byte array.IOExceptionint read(byte[] sink) throws IOException
sink.length bytes from this and copies them into sink. Returns
 the number of bytes read, or -1 if this source is exhausted.IOExceptionvoid readFully(byte[] sink)
        throws IOException
sink.length bytes from this and copies them into sink. Throws
 an EOFException if the requested number of bytes cannot be read.IOExceptionint read(byte[] sink,
         int offset,
         int byteCount)
  throws IOException
byteCount bytes from this and copies them into sink at offset. Returns the number of bytes read, or -1 if this source is exhausted.IOExceptionvoid readFully(Buffer sink, long byteCount) throws IOException
byteCount bytes from this and appends them to sink. Throws an
 EOFException if the requested number of bytes cannot be read.IOExceptionlong readAll(Sink sink) throws IOException
sink. Returns the total number of bytes
 written to sink which will be 0 if this is exhausted.IOExceptionString readUtf8() throws IOException
   Buffer buffer = new Buffer()
       .writeUtf8("Uh uh uh!")
       .writeByte(' ')
       .writeUtf8("You didn't say the magic word!");
   assertEquals("Uh uh uh! You didn't say the magic word!", buffer.readUtf8());
   assertEquals(0, buffer.size());
   assertEquals("", buffer.readUtf8());
   assertEquals(0, buffer.size());
 IOExceptionString readUtf8(long byteCount) throws IOException
byteCount bytes from this, decodes them as UTF-8, and returns the string.
 
   Buffer buffer = new Buffer()
       .writeUtf8("Uh uh uh!")
       .writeByte(' ')
       .writeUtf8("You didn't say the magic word!");
   assertEquals(40, buffer.size());
   assertEquals("Uh uh uh! You ", buffer.readUtf8(14));
   assertEquals(26, buffer.size());
   assertEquals("didn't say the", buffer.readUtf8(14));
   assertEquals(12, buffer.size());
   assertEquals(" magic word!", buffer.readUtf8(12));
   assertEquals(0, buffer.size());
 IOException@Nullable String readUtf8Line() throws IOException
"\n" or "\r\n"; these characters are not included in the result.
 
   Buffer buffer = new Buffer()
       .writeUtf8("I'm a hacker!\n")
       .writeUtf8("That's what I said: you're a nerd.\n")
       .writeUtf8("I prefer to be called a hacker!\n");
   assertEquals(81, buffer.size());
   assertEquals("I'm a hacker!", buffer.readUtf8Line());
   assertEquals(67, buffer.size());
   assertEquals("That's what I said: you're a nerd.", buffer.readUtf8Line());
   assertEquals(32, buffer.size());
   assertEquals("I prefer to be called a hacker!", buffer.readUtf8Line());
   assertEquals(0, buffer.size());
   assertEquals(null, buffer.readUtf8Line());
   assertEquals(0, buffer.size());
 On the end of the stream this method returns null, just like BufferedReader. If the source doesn't end with a line break then an implicit line
 break is assumed. Null is returned once the source is exhausted. Use this for human-generated
 data, where a trailing line break is optional.
IOExceptionString readUtf8LineStrict() throws IOException
"\n" or "\r\n"; these characters are not included in the result.
 On the end of the stream this method throws. Every call must consume either
 '\r\n' or '\n'. If these characters are absent in the stream, an EOFException
 is thrown. Use this for machine-generated data where a missing line break implies truncated
 input.
IOExceptionString readUtf8LineStrict(long limit) throws IOException
readUtf8LineStrict(), except this allows the caller to specify the longest
 allowed match. Use this to protect against streams that may not include
 "\n" or "\r\n".
 The returned string will have at most limit UTF-8 bytes, and the maximum number
 of bytes scanned is limit + 2. If limit == 0 this will always throw
 an EOFException because no bytes will be scanned.
 
This method is safe. No bytes are discarded if the match fails, and the caller is free to try another match:
   Buffer buffer = new Buffer();
   buffer.writeUtf8("12345\r\n");
   // This will throw! There must be \r\n or \n at the limit or before it.
   buffer.readUtf8LineStrict(4);
   // No bytes have been consumed so the caller can retry.
   assertEquals("12345", buffer.readUtf8LineStrict(5));
 IOExceptionint readUtf8CodePoint()
               throws IOException
If this source is exhausted before a complete code point can be read, this throws an EOFException and consumes no input.
 
If this source doesn't start with a properly-encoded UTF-8 code point, this method will
 remove 1 or more non-UTF-8 bytes and return the replacement character (U+FFFD). This
 covers encoding problems (the input is not properly-encoded UTF-8), characters out of range
 (beyond the 0x10ffff limit of Unicode), code points for UTF-16 surrogates (U+d800..U+dfff) and
 overlong encodings (such as 0xc080 for the NUL character in modified UTF-8).
IOExceptionString readString(Charset charset) throws IOException
charset, and returns the string.IOExceptionString readString(long byteCount, Charset charset) throws IOException
byteCount bytes from this, decodes them as charset, and returns the
 string.IOExceptionlong indexOf(byte b)
      throws IOException
indexOf(b, 0).IOExceptionlong indexOf(byte b,
             long fromIndex)
      throws IOException
b in the buffer at or after fromIndex. This
 expands the buffer as necessary until b is found. This reads an unbounded number of
 bytes into the buffer. Returns -1 if the stream is exhausted before the requested byte is
 found. 
   Buffer buffer = new Buffer();
   buffer.writeUtf8("Don't move! He can't see us if we don't move.");
   byte m = 'm';
   assertEquals(6,  buffer.indexOf(m));
   assertEquals(40, buffer.indexOf(m, 12));
 IOExceptionlong indexOf(byte b,
             long fromIndex,
             long toIndex)
      throws IOException
b if it is found in the range of fromIndex inclusive
 to toIndex exclusive. If b isn't found, or if fromIndex == toIndex,
 then -1 is returned.
 The scan terminates at either toIndex or the end of the buffer, whichever comes
 first. The maximum number of bytes scanned is toIndex-fromIndex.
IOExceptionlong indexOf(ByteString bytes) throws IOException
indexOf(bytes, 0).IOExceptionlong indexOf(ByteString bytes, long fromIndex) throws IOException
bytes in the buffer at or after fromIndex. This expands the buffer as necessary until bytes is found. This reads an
 unbounded number of bytes into the buffer. Returns -1 if the stream is exhausted before the
 requested bytes are found. 
   ByteString MOVE = ByteString.encodeUtf8("move");
   Buffer buffer = new Buffer();
   buffer.writeUtf8("Don't move! He can't see us if we don't move.");
   assertEquals(6,  buffer.indexOf(MOVE));
   assertEquals(40, buffer.indexOf(MOVE, 12));
 IOExceptionlong indexOfElement(ByteString targetBytes) throws IOException
indexOfElement(targetBytes, 0).IOExceptionlong indexOfElement(ByteString targetBytes, long fromIndex) throws IOException
fromIndex and that contains
 any of the bytes in targetBytes. This expands the buffer as necessary until a target
 byte is found. This reads an unbounded number of bytes into the buffer. Returns -1 if the
 stream is exhausted before the requested byte is found. 
   ByteString ANY_VOWEL = ByteString.encodeUtf8("AEOIUaeoiu");
   Buffer buffer = new Buffer();
   buffer.writeUtf8("Dr. Alan Grant");
   assertEquals(4,  buffer.indexOfElement(ANY_VOWEL));    // 'A' in 'Alan'.
   assertEquals(11, buffer.indexOfElement(ANY_VOWEL, 9)); // 'a' in 'Grant'.
 IOExceptionboolean rangeEquals(long offset,
                    ByteString bytes)
             throws IOException
offset in this source equal bytes. This expands
 the buffer as necessary until a byte does not match, all bytes are matched, or if the stream
 is exhausted before enough bytes could determine a match.  
   ByteString simonSays = ByteString.encodeUtf8("Simon says:");
   Buffer standOnOneLeg = new Buffer().writeUtf8("Simon says: Stand on one leg.");
   assertTrue(standOnOneLeg.rangeEquals(0, simonSays));
   Buffer payMeMoney = new Buffer().writeUtf8("Pay me $1,000,000.");
   assertFalse(payMeMoney.rangeEquals(0, simonSays));
 IOExceptionboolean rangeEquals(long offset,
                    ByteString bytes,
                    int bytesOffset,
                    int byteCount)
             throws IOException
byteCount bytes at offset in this source equal bytes
 at bytesOffset. This expands the buffer as necessary until a byte does not match, all
 bytes are matched, or if the stream is exhausted before enough bytes could determine a match.IOExceptionInputStream inputStream()
Copyright © 2017. All rights reserved.