2013-06-18 2 views
0

LittleProxy 구현에서 파일 다운로드 완료 알림을받을 수있는 기능이 있습니까?HTTP 응답 첨부 파일 다운로드 완료 알림

현재 아래 코드를 사용하여 첨부 파일을 HTTP 응답 메시지에 저장하고 있습니다. 이 chanBuff.getBytes(...) 차단 호출 또는 비 차단 인 경우 확실하지 않습니다.

이 코드 바로 다음에 저장된 파일을 처리하려고하면 예외가 발생합니다. 파일이 완전히 다운로드되어 디스크에 저장 될 때까지 기다리면 문제가 자동으로 해결 될 수 있습니다.

java.io.IOException: Channel not open for writing - cannot extend file to required size 
    at sun.nio.ch.FileChannelImpl.map(Unknown Source) 
    at com.googlecode.mp4parser.AbstractBox.parse(AbstractBox.java:109) 
    at com.coremedia.iso.AbstractBoxParser.parseBox(AbstractBoxParser.java:118) 
    at com.coremedia.iso.IsoFile.parse(IsoFile.java:85) 
    at com.coremedia.iso.IsoFile.<init>(IsoFile.java:54) 
    at org.media.processor.LibraryImpl.printFileDetails(LibraryImpl.java:529) 

답변

1

채널 버퍼는 byte []를 중심으로 캡슐화됩니다.

chanBuff.getBytes (0, outputStream, chanBuff.readableBytes())는 outputStream.write (byte [], begin, length)를 호출합니다.

콘텐츠를 작성하기 전에 먼저 ChannelBuffer에 corrent 길이 바이트를 할당해야합니다.

+0

"chanBuff.getBytes()"함수가 정상적으로 작동하고 있습니다. 나는 우리가 어떤 기억을 할당 할 필요가 있다고 생각하지 않는다. 필자는 outputstream에 대한 쓰기가 끝났을 때 그 저장된 데이터에 대해 다음 작업을 수행 할 수 있음을 알리는 방법이 있는지 알고 싶어합니다. – AnilJ

+0

writeComplete 이벤트가 작동합니까? –

+0

안녕하세요 Jian, 어떻게 작동합니까? 내가 틀렸어도 WriteComplete 이벤트는 ChannelBuffer의 활동을 추적하는 것입니다. 내가 찾고있는 것은 FileOutputStream에서 활동 (쓰기)을 모니터하는 것이다. 위의 코드 조각을 보면 getBytes() 메서드가 outputStream에 씁니다. 이 쓰기가 완료되면 확인하고 싶습니다. getBytes() 함수가 동기 (블로킹) 또는 비 블로킹인지 확실하지 않습니다. – AnilJ