val buffer = ByteBuffer.wrap(byteArray)
// Read the first 4 bytes as an int
val intValue = buffer.getInt()
// Read the next byte as a boolean
val booleanValue = buffer.get() != 0.toByte
// Read the next 64 bytes as a string
val bytesForStringValue = new Array[Byte](64)
buffer.get(bytesForStringValue)
val stringValue = new String(bytesForStringValue, StandardCharsets.UTF_8)
Java版本:
如果您想坚持使用nio包,可以将数组 Package 在ByteBuffer中
ByteBuffer buffer = ByteBuffer.wrap(byteArray);
然后检索如下值
int intValue = buffer.getInt();
boolean booleanValue = buffer.get() != 0;
byte[] bytesForStringValue = new byte[64];
buffer.get(bytesForStringValue);
String stringValue = new String(bytesForStringValue, StandardCharsets.UTF_8);
使用InputStreams还有其他选项
DataInputStream inputStream = new DataInputStream(new BufferedInputStream(new FileInputStream("/path/to/file")));
然后使用DataInputStream提供的功能提取所需的值:
int intValue = inputStream.readInt();
boolean booleanValue = inputStream.readBoolean();
byte[] bytesForStringValue = new byte[64];
inputStream.readFully(bytesForStringValue);
String stringValue = new String(bytesForStringValue, "UTF-8");
1条答案
按热度按时间nkoocmlb1#
新增Scala版本:
在Scala中,您可以使用与Java相同的Java库(下面的示例)。主要区别在于语法,例如使用val声明变量。除此之外,代码本质上与Java版本相同。
Java版本:
如果您想坚持使用nio包,可以将数组 Package 在ByteBuffer中
然后检索如下值
使用InputStreams还有其他选项
然后使用DataInputStream提供的功能提取所需的值: