我正在尝试通过ObjectOutputStream将文件从服务器发送到客户端。我认为使用这个流发送不同的对象和原始文件数据是一种更简单的方法。
int size;
byte[] buf;
while ((size = (int) in.readObject()) > 0) {
fOut.write((buf = (byte[]) in.readObject()), 0, size);
System.out.printf("%d\tvs\t%d%n", Arrays.hashCode(buf), (int) in.readObject());
}
byte[] buf = new byte[(int) MB];
int bufSize;
while ((bufSize = fileReader.read(buf)) != -1) {
out.writeObject(bufSize);
out.writeObject(buf);
out.writeObject(Arrays.hashCode(buf));
}
out.writeObject(-1);
in = new ObjectInputStream(socket.getInputStream());
out = new ObjectOutputStream(socket.getOutputStream());
Connecting...
Connection established
-1060163348 vs -1060163348
-1060163348 vs 1768685466
-1060163348 vs 861707881
-1060163348 vs 1055789475
-1060163348 vs -79313434
-1060163348 vs 385231183
-1060163348 vs -633252012
...
我想问题是流保存了每个写的对象。所以我从某种缓存读取字节数组,而不是从套接字...
不过,这是有帮助的!
byte[] buf = new byte[(int) MB];
int bufSize;
while ((bufSize = fileReader.read(buf)) != -1) {
out.writeObject(bufSize);
out.writeObject(buf);
out.writeObject(Arrays.hashCode(buf));
out.reset(); // new line - it helps!!!!
}
out.writeObject(-1);
问题内容: 假设我有一个可序列化的类。 我想通过套接字将其传输到另一台计算机,从接收的字节重建该计算机。 我怎样才能做到这一点? 问题答案: 准备要发送的字节数组: 从字节数组创建对象:
问题内容: 我在流程之前有这个: 然后在另一部分 为什么我收到ClassCastException? 问题答案: 最终我以这种方式工作:
问题内容: 是否可以使Java中的2D数组可序列化? 如果没有,我正在寻找将3x3 2D数组“翻译”为向量的向量。 我一直在玩矢量,但我仍然不确定如何表示。谁能帮我? 谢谢! 问题答案: Java中的数组是可序列化的,因此数组数组也可以序列化。 但是,它们所包含的对象可能不是,因此请检查数组的内容是否可序列化-如果不是,则使其可序列化。 这是一个使用整数数组的示例。 输出:
我不能在使用C Glib序列化的Java节俭对象中反序列化。我的序列化代码如下(我在这里提出问题后提出的解决方案): 发送和接收的消息长度相同。但不知何故,在Java端,我不能复制对象。 可能有人面临过类似的问题? UPD: null 在发送到Kafka之前,对相同的tbuffer->buf连续进行了两次十六进制转储。看起来缓冲区在发送前包含错误的数据:
问题内容: 我必须在Java中以字节数组形式存储一些常量值(UUID),并且我想知道初始化这些静态数组的最佳方法是什么。这就是我目前的做法,但我觉得必须有更好的方法。 有什么我可以使用的,虽然效率可能较低,但看起来会更干净?例如: 问题答案: 使用将十六进制字符串转换为的函数,您可以执行 我建议您在使用Java将十六进制转储的字符串表示形式转换为字节数组中使用 DaveL定义的功能吗? 我将其插入
我必须在java中以字节数组的形式存储一些常量值(UUID),我想知道初始化这些静态数组的最佳方法是什么。我现在就是这样做的,但我觉得一定有更好的办法。 有没有什么东西我可以使用,可能效率较低,但会看起来更干净?例如: