Package okio
Class ByteString
- java.lang.Object
-
- okio.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 after00
. This is counter to the sort order of the corresponding bytes, where-1
sorts before0
.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 emptyByteString
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.nio.ByteBuffer
asByteBuffer()
Returns aByteBuffer
view of the bytes in thisByteString
.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 thecharset
-encoded bytes ofs
.static ByteString
encodeUtf8(java.lang.String s)
Returns a new byte string containing theUTF-8
bytes ofs
.boolean
endsWith(byte[] suffix)
boolean
endsWith(ByteString suffix)
boolean
equals(java.lang.Object o)
byte
getByte(int pos)
Returns the byte atpos
.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 ofdata
.static ByteString
of(byte[] data, int offset, int byteCount)
Returns a new byte string containing a copy ofbyteCount
bytes ofdata
starting atoffset
.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 ofother
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 ofother
in[otherOffset..otherOffset+byteCount)
.static ByteString
read(java.io.InputStream in, int byteCount)
Readscount
bytes fromin
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 newString
by decoding the bytes usingcharset
.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 specifiedbeginIndex
and ends at the specifiedendIndex
.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 thisByteString
.java.lang.String
toString()
Returns a human-readable string that describes the contents of this byte string.java.lang.String
utf8()
Constructs a newString
by decoding the bytes asUTF-8
.void
write(java.io.OutputStream out)
Writes the contents of this byte string toout
.
-
-
-
Field Detail
-
EMPTY
public static final ByteString EMPTY
A singleton emptyByteString
.
-
-
Method Detail
-
of
public static ByteString of(byte... data)
Returns a new byte string containing a clone of the bytes ofdata
.
-
of
public static ByteString of(byte[] data, int offset, int byteCount)
Returns a new byte string containing a copy ofbyteCount
bytes ofdata
starting atoffset
.
-
of
public static ByteString of(java.nio.ByteBuffer data)
-
encodeUtf8
public static ByteString encodeUtf8(java.lang.String s)
Returns a new byte string containing theUTF-8
bytes ofs
.
-
encodeString
public static ByteString encodeString(java.lang.String s, java.nio.charset.Charset charset)
Returns a new byte string containing thecharset
-encoded bytes ofs
.
-
utf8
public java.lang.String utf8()
Constructs a newString
by decoding the bytes asUTF-8
.
-
string
public java.lang.String string(java.nio.charset.Charset charset)
Constructs a newString
by decoding the bytes usingcharset
.
-
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 ifbase64
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
Readscount
bytes fromin
and returns the result.- Throws:
java.io.EOFException
- ifin
has fewer thancount
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 ifbeginIndex
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 specifiedbeginIndex
and ends at the specifiedendIndex
. Returns this byte string ifbeginIndex
is 0 andendIndex
is the length of this byte string.
-
getByte
public byte getByte(int pos)
Returns the byte atpos
.
-
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 thisByteString
.
-
asByteBuffer
public java.nio.ByteBuffer asByteBuffer()
Returns aByteBuffer
view of the bytes in thisByteString
.
-
write
public void write(java.io.OutputStream out) throws java.io.IOException
Writes the contents of this byte string toout
.- 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 ofother
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 ofother
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 classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
compareTo
public int compareTo(ByteString byteString)
- Specified by:
compareTo
in interfacejava.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 classjava.lang.Object
-
-