Package okio

Class ByteString

java.lang.Object
okio.ByteString
All Implemented Interfaces:
Serializable, Comparable<ByteString>

public class ByteString extends Object implements Serializable, 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:
  • Field Details

    • EMPTY

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

    • 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(ByteBuffer data)
    • encodeUtf8

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

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

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

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

      public 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 String base64Url()
      Returns this byte string encoded as URL-safe Base64.
    • decodeBase64

      @Nullable public static ByteString decodeBase64(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 String hex()
      Returns this byte string encoded in hexadecimal.
    • decodeHex

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

      public static ByteString read(InputStream in, int byteCount) throws IOException
      Reads count bytes from in and returns the result.
      Throws:
      EOFException - if in has fewer than count bytes to read.
      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 ByteBuffer asByteBuffer()
      Returns a ByteBuffer view of the bytes in this ByteString.
    • write

      public void write(OutputStream out) throws IOException
      Writes the contents of this byte string to out.
      Throws:
      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(Object o)
      Overrides:
      equals in class Object
    • hashCode

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

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

      public 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 Object