我知道ObjectOutputStream / ObjectInputStream使用标头,这不是一个正确的用例。但无论如何我需要使用接口DataInput和DataOutput将一些数据包装到其中。
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
byte[] array = serialize("test");
String deserialized = deserialize(array);
System.out.println(deserialized);
}
private static byte[] serialize(String test) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeUTF(test);
byteArrayOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return byteArrayOutputStream.toByteArray();
}
private static String deserialize(byte[] array) {
String temp = null;
try {
ObjectInputStream objectInputStream = new ObjectInputStream(new ByteArrayInputStream(array));
temp = objectInputStream.readUTF();
objectInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return temp;
}
}
我真的不知道怎么做到这一点。我是对的,目前问题是那些标题?
答案 0 :(得分:2)
在关闭objectOutputStream.flush();
之前,您应该致电byteArrayOutputStream
。
ObjectOutputStream
有它的内部缓冲区,所以你只得到字节数组中字符串的开头。