1

我在我的项目中使用 netty-3.5.3.Final 来传输文件。不幸的是,有时我会得到错误的数据。例如,我正在下载 1 GB 的文件大小。收到文件后包含5个“错误”。所有错误都会影响单个字节。这是一个“合乎逻辑”的变化在此处输入图像描述

Ë -> ë  (CB -> EB)  C+2 = E
À -> à  (C0 -> E0)  C+2 = E
Ú -> ú  (DA -> FA)  D+2 = F
œ -> ¼  (9C -> BC)  9+2 = B
 -> $   (04 -> 24)  0+2 = 2
e.t.c.
(Not every Ë becomes ë, only ~1/100000000...000..)

文件获取过程:

ChannelBuffer buf = (ChannelBuffer) e.getMessage(); //SimpleChannelHandler.messageReceived(...)..
 ByteBuffer bbuf = buf.toByteBuffer();
RandomAccessFile bos = new RandomAccessFile(...,"rw");
bos.write(bbuf.array(), 0, bbuf.position());
bos.close();

数据不会有任何变化。为什么会发生?

4

1 回答 1

1

我认为您编写的代码是错误的。

你能试试这个:

ChannelBuffer buf = ...
OutputStream out = new FileOutputStream(...)
buf.readBytes(out, buf.readableBytes());
out.close();
于 2012-08-14T05:17:08.773 回答