在LittleProxy实现中,是否有一项功能可以让我们获得文件下载完成的通知?
目前我使用下面的代码来保存HTTP响应消息的附件。我不确定这是chanBuff.getBytes(...)
阻止呼叫还是非阻止。
ChannelBuffer chanBuff = response.getContent();
FileOutputStream outputStream = new FileOutputStream(outputFileName);
chanBuff.getBytes(0, outputStream, chanBuff.readableBytes());
outputStream.close();
当我尝试在此代码之后立即处理保存的文件时,它会抛出异常。如果我等到文件完全下载并保存在磁盘上,可能问题可能会自动解决。
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)
答案 0 :(得分:1)
ChannelBuffer只是在byte []周围进行封装。
chanBuff.getBytes(0,outputStream,chanBuff.readableBytes())将调用outputStream.write(byte [],begin,length)。
因此,在编写内容之前,首先应在ChannelBuffer中分配一个正确的长度字节。