gpt4 book ai didi

java - 输入流在文件结束之前返回-1

转载 作者:行者123 更新时间:2023-12-01 05:45:42 24 4
gpt4 key购买 nike

我正在从服务器流式传输文件,然后将其流式传输回套接字(基本上是流代理)。这用于缓冲歌曲。因此,一旦缓冲区已满,就不再从套接字读取数据,直到缓冲区清空为止。然而,一旦读取更多数据,InputStream 将读取 X 个字节,然后突然返回 -1,表示文件结束,而实际上并非如此。是否发生超时?

这是一些示例代码:

  InputStream data = realResponse.getEntity().getContent();

...some code...

int totalBytes = 0;
int count = 0;
// Start streaming content.
byte[] buff = new byte[1024 * 50];
while (isRunning && (readBytes = data.read(buff, 0, buff.length)) != -1) {
totalBytes += readBytes;

Log(count + ": buffer:" + buff + " readBytes:" + readBytes + " total:" + totalBytes);
client.getOutputStream().write(buff, 0, readBytes);
Log("Finished write");
count++;

}

日志示例如下:

0: buffer:B@45030a50 readBytes: 16164 total: 16164
1: buffer:B@45030a50 readBytes: 16384 total: 32548
...
100: buffer:B@45030a50 readBytes: 16384 total: 1654564
<a long pause here>
100: buffer:B@45030a50 readBytes: 16384 total: 1670948
100: buffer:B@45030a50 readBytes: 16384 total: 1687332
-1 Received

如有任何帮助或建议,我们将不胜感激

最佳答案

read() 在流末尾而不是之前返回 -1。如果你比预期更早得到-1,则数据比预期短,或者服务器比预期更早关闭他的末端。

关于java - 输入流在文件结束之前返回-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5958671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com