Package okio

Class ByteString

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<ByteString>

    public class ByteString
    extends java.lang.Object
    implements java.io.Serializable, java.lang.Comparable<ByteString>
    An immutable sequence of bytes.

    Byte strings compare lexicographically as a sequence of unsigned bytes. That is, the byte string ff sorts after 00. This is counter to the sort order of the corresponding bytes, where -1 sorts before 0.

    Full disclosure: this class provides untrusted input and output streams with raw access to the underlying byte array. A hostile stream implementation could keep a reference to the mutable byte string, violating the immutable guarantee of this class. For this reason a byte string's immutability guarantee cannot be relied upon for security in applets and other environments that run both trusted and untrusted code in the same process.

    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static ByteString EMPTY
      A singleton empty ByteString.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.nio.ByteBuffer asByteBuffer()
      Returns a ByteBuffer view of the bytes in this ByteString.
      java.lang.String base64()
      Returns this byte string encoded as Base64.
      java.lang.String base64Url()
      Returns this byte string encoded as URL-safe Base64.
      int compareTo​(ByteString byteString)  
      static ByteString decodeBase64​(java.lang.String base64)
      Decodes the Base64-encoded bytes and returns their value as a byte string.
      static ByteString decodeHex​(java.lang.String hex)
      Decodes the hex-encoded bytes and returns their value a byte string.
      static ByteString encodeString​(java.lang.String s, java.nio.charset.Charset charset)
      Returns a new byte string containing the charset-encoded bytes of s.
      static ByteString encodeUtf8​(java.lang.String s)
      Returns a new byte string containing the UTF-8 bytes of s.
      boolean endsWith​(byte[] suffix)  
      boolean endsWith​(ByteString suffix)  
      boolean equals​(java.lang.Object o)  
      byte getByte​(int pos)
      Returns the byte at pos.
      int hashCode()  
      java.lang.String hex()
      Returns this byte string encoded in hexadecimal.
      ByteString hmacSha1​(ByteString key)
      Returns the 160-bit SHA-1 HMAC of this byte string.
      ByteString hmacSha256​(ByteString key)
      Returns the 256-bit SHA-256 HMAC of this byte string.
      ByteString hmacSha512​(ByteString key)
      Returns the 512-bit SHA-512 HMAC of this byte string.
      int indexOf​(byte[] other)  
      int indexOf​(byte[] other, int fromIndex)  
      int indexOf​(ByteString other)  
      int indexOf​(ByteString other, int fromIndex)  
      int lastIndexOf​(byte[] other)  
      int lastIndexOf​(byte[] other, int fromIndex)  
      int lastIndexOf​(ByteString other)  
      int lastIndexOf​(ByteString other, int fromIndex)  
      ByteString md5()
      Returns the 128-bit MD5 hash of this byte string.
      static ByteString of​(byte... data)
      Returns a new byte string containing a clone of the bytes of data.
      static ByteString of​(byte[] data, int offset, int byteCount)
      Returns a new byte string containing a copy of byteCount bytes of data starting at offset.
      static ByteString of​(java.nio.ByteBuffer data)  
      boolean rangeEquals​(int offset, byte[] other, int otherOffset, int byteCount)
      Returns true if the bytes of this in [offset..offset+byteCount) equal the bytes of other in [otherOffset..otherOffset+byteCount).
      boolean rangeEquals​(int offset, ByteString other, int otherOffset, int byteCount)
      Returns true if the bytes of this in [offset..offset+byteCount) equal the bytes of other in [otherOffset..otherOffset+byteCount).
      static ByteString read​(java.io.InputStream in, int byteCount)
      Reads count bytes from in and returns the result.
      ByteString sha1()
      Returns the 160-bit SHA-1 hash of this byte string.
      ByteString sha256()
      Returns the 256-bit SHA-256 hash of this byte string.
      ByteString sha512()
      Returns the 512-bit SHA-512 hash of this byte string.
      int size()
      Returns the number of bytes in this ByteString.
      boolean startsWith​(byte[] prefix)  
      boolean startsWith​(ByteString prefix)  
      java.lang.String string​(java.nio.charset.Charset charset)
      Constructs a new String by decoding the bytes using charset.
      ByteString substring​(int beginIndex)
      Returns a byte string that is a substring of this byte string, beginning at the specified index until the end of this string.
      ByteString substring​(int beginIndex, int endIndex)
      Returns a byte string that is a substring of this byte string, beginning at the specified beginIndex and ends at the specified endIndex.
      ByteString toAsciiLowercase()
      Returns a byte string equal to this byte string, but with the bytes 'A' through 'Z' replaced with the corresponding byte in 'a' through 'z'.
      ByteString toAsciiUppercase()
      Returns a byte string equal to this byte string, but with the bytes 'a' through 'z' replaced with the corresponding byte in 'A' through 'Z'.
      byte[] toByteArray()
      Returns a byte array containing a copy of the bytes in this ByteString.
      java.lang.String toString()
      Returns a human-readable string that describes the contents of this byte string.
      java.lang.String utf8()
      Constructs a new String by decoding the bytes as UTF-8.
      void write​(java.io.OutputStream out)
      Writes the contents of this byte string to out.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • EMPTY

        public static final ByteString EMPTY
        A singleton empty ByteString.
    • Method Detail

      • of

        public static ByteString of​(byte... data)
        Returns a new byte string containing a clone of the bytes of data.
      • of

        public static ByteString of​(byte[] data,
                                    int offset,
                                    int byteCount)
        Returns a new byte string containing a copy of byteCount bytes of data starting at offset.
      • of

        public static ByteString of​(java.nio.ByteBuffer data)
      • encodeUtf8

        public static ByteString encodeUtf8​(java.lang.String s)
        Returns a new byte string containing the UTF-8 bytes of s.
      • encodeString

        public static ByteString encodeString​(java.lang.String s,
                                              java.nio.charset.Charset charset)
        Returns a new byte string containing the charset-encoded bytes of s.
      • utf8

        public java.lang.String utf8()
        Constructs a new String by decoding the bytes as UTF-8.
      • string

        public java.lang.String string​(java.nio.charset.Charset charset)
        Constructs a new String by decoding the bytes using charset.
      • base64

        public java.lang.String base64()
        Returns this byte string encoded as Base64. In violation of the RFC, the returned string does not wrap lines at 76 columns.
      • md5

        public ByteString md5()
        Returns the 128-bit MD5 hash of this byte string.
      • sha1

        public ByteString sha1()
        Returns the 160-bit SHA-1 hash of this byte string.
      • sha256

        public ByteString sha256()
        Returns the 256-bit SHA-256 hash of this byte string.
      • sha512

        public ByteString sha512()
        Returns the 512-bit SHA-512 hash of this byte string.
      • hmacSha1

        public ByteString hmacSha1​(ByteString key)
        Returns the 160-bit SHA-1 HMAC of this byte string.
      • hmacSha256

        public ByteString hmacSha256​(ByteString key)
        Returns the 256-bit SHA-256 HMAC of this byte string.
      • hmacSha512

        public ByteString hmacSha512​(ByteString key)
        Returns the 512-bit SHA-512 HMAC of this byte string.
      • base64Url

        public java.lang.String base64Url()
        Returns this byte string encoded as URL-safe Base64.
      • decodeBase64

        @Nullable
        public static ByteString decodeBase64​(java.lang.String base64)
        Decodes the Base64-encoded bytes and returns their value as a byte string. Returns null if base64 is not a Base64-encoded sequence of bytes.
      • hex

        public java.lang.String hex()
        Returns this byte string encoded in hexadecimal.
      • decodeHex

        public static ByteString decodeHex​(java.lang.String hex)
        Decodes the hex-encoded bytes and returns their value a byte string.
      • read

        public static ByteString read​(java.io.InputStream in,
                                      int byteCount)
                               throws java.io.IOException
        Reads count bytes from in and returns the result.
        Throws:
        java.io.EOFException - if in has fewer than count bytes to read.
        java.io.IOException
      • toAsciiLowercase

        public ByteString toAsciiLowercase()
        Returns a byte string equal to this byte string, but with the bytes 'A' through 'Z' replaced with the corresponding byte in 'a' through 'z'. Returns this byte string if it contains no bytes in 'A' through 'Z'.
      • toAsciiUppercase

        public ByteString toAsciiUppercase()
        Returns a byte string equal to this byte string, but with the bytes 'a' through 'z' replaced with the corresponding byte in 'A' through 'Z'. Returns this byte string if it contains no bytes in 'a' through 'z'.
      • substring

        public ByteString substring​(int beginIndex)
        Returns a byte string that is a substring of this byte string, beginning at the specified index until the end of this string. Returns this byte string if beginIndex is 0.
      • substring

        public ByteString substring​(int beginIndex,
                                    int endIndex)
        Returns a byte string that is a substring of this byte string, beginning at the specified beginIndex and ends at the specified endIndex. Returns this byte string if beginIndex is 0 and endIndex is the length of this byte string.
      • getByte

        public byte getByte​(int pos)
        Returns the byte at pos.
      • size

        public int size()
        Returns the number of bytes in this ByteString.
      • toByteArray

        public byte[] toByteArray()
        Returns a byte array containing a copy of the bytes in this ByteString.
      • asByteBuffer

        public java.nio.ByteBuffer asByteBuffer()
        Returns a ByteBuffer view of the bytes in this ByteString.
      • write

        public void write​(java.io.OutputStream out)
                   throws java.io.IOException
        Writes the contents of this byte string to out.
        Throws:
        java.io.IOException
      • rangeEquals

        public boolean rangeEquals​(int offset,
                                   ByteString other,
                                   int otherOffset,
                                   int byteCount)
        Returns true if the bytes of this in [offset..offset+byteCount) equal the bytes of other in [otherOffset..otherOffset+byteCount). Returns false if either range is out of bounds.
      • rangeEquals

        public boolean rangeEquals​(int offset,
                                   byte[] other,
                                   int otherOffset,
                                   int byteCount)
        Returns true if the bytes of this in [offset..offset+byteCount) equal the bytes of other in [otherOffset..otherOffset+byteCount). Returns false if either range is out of bounds.
      • startsWith

        public final boolean startsWith​(ByteString prefix)
      • startsWith

        public final boolean startsWith​(byte[] prefix)
      • endsWith

        public final boolean endsWith​(ByteString suffix)
      • endsWith

        public final boolean endsWith​(byte[] suffix)
      • indexOf

        public final int indexOf​(ByteString other)
      • indexOf

        public final int indexOf​(ByteString other,
                                 int fromIndex)
      • indexOf

        public final int indexOf​(byte[] other)
      • indexOf

        public int indexOf​(byte[] other,
                           int fromIndex)
      • lastIndexOf

        public final int lastIndexOf​(ByteString other)
      • lastIndexOf

        public final int lastIndexOf​(ByteString other,
                                     int fromIndex)
      • lastIndexOf

        public final int lastIndexOf​(byte[] other)
      • lastIndexOf

        public int lastIndexOf​(byte[] other,
                               int fromIndex)
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • compareTo

        public int compareTo​(ByteString byteString)
        Specified by:
        compareTo in interface java.lang.Comparable<ByteString>
      • toString

        public java.lang.String toString()
        Returns a human-readable string that describes the contents of this byte string. Typically this is a string like [text=Hello] or [hex=0000ffff].
        Overrides:
        toString in class java.lang.Object