0

在 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)
4

1 回答 1

1

ChannelBuffer 只是对 byte[] 的封装。

chanBuff.getBytes(0, outputStream, chanBuff.readableBytes()) 将调用 outputStream.write(byte[], begin, length)。

所以在你写内容之前,你应该先在ChannelBuffer中分配一个正确长度的字节。

于 2013-06-22T13:11:39.980 回答