2012-08-13 2 views
1

내 프로젝트에서 netty-3.5.3.Final 파일을 사용하고 있습니다. 불행히도 때로는 잘못된 데이터를 얻습니다. 예를 들어, 1GB의 파일 크기를 다운로드 중입니다. 파일을받은 후 5 "실수"가 포함되어 있습니다. 모든 오류는 개별 바이트에 영향을줍니다.자바 네트워크 데이터 브레이크

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(); 

데이터 변경 사항이 적용되지 않습니다 : 이것은 "논리적"변화 enter image description here

Ë -> ë (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..) 

파일을 얻는 과정을 것입니다. 왜 그런 일이 일어날 수 있습니까?

+0

당신이이 [SSCCE] (http://sscce.org/)이 무엇인지 아십니까? – oldrinb

답변

1

작성 코드가 잘못되었다고 생각합니다.

이 시도 할 수 :

ChannelBuffer buf = ... 
OutputStream out = new FileOutputStream(...) 
buf.readBytes(out, buf.readableBytes()); 
out.close(); 
+0

작동하는 것처럼 보입니다. 하지만 내 경우에 실수가 어디 있니? – user1221483

관련 문제