0

下面是一个示例类,展示了我如何将 String 放入 ByteBuffer。我可以将字符串写入这样的文件,但我不确定如何知道字节数组的大小以在反序列化时再次读取标题。

public class TestClass {

 private Long id;
 private String title;

 public void write (final ByteBuffer byteBuffer) {
  byteBuffer.putInt(title.length());
  byteBuffer.put(title.getBytes());
 }

 public static UpdateFeed read (final ByteBuffer byteBuffer) {

 final long id = byteBuffer.getLong();

 final int titleLength = byteBuffer.getInt();
 byte[] titleArr = new byte[titleLength];
 byteBuffer.get(titleArr);
 String title = new String(titleArr);
 System.out.println("Title :"+title);


  ????????????????
 return new TestClass(id,title);
 }

}
4

1 回答 1

1

我建议你先写下长度,然后你可以准确地读回那么多字节。您应该始终write以相同的顺序和格式编写您的方法,以在您的“读取”方法中写出您需要阅读的内容。

除非您有充分的理由这样做,否则使用支持 writeUTF/readUTF 的 DataInput/DataOutputStream 会更简单。

于 2012-11-26T13:03:44.567 回答