Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用网络[android]在文件下载中填充缓冲区_Java_Android_Networking_Download_Buffer - Fatal编程技术网

Java 如何使用网络[android]在文件下载中填充缓冲区

Java 如何使用网络[android]在文件下载中填充缓冲区,java,android,networking,download,buffer,Java,Android,Networking,Download,Buffer,下载文件时,我正在加密字节数组。但是,由于使用了网络,因此即使缓冲区数组的大小固定为4096,也会动态填充数据。当重新解密文件时,我们不使用网络,因此4096字节不断地进入。加密和解密问题发生在这个区域 我想知道的是,下载时进入缓冲区的字节大小如何总是用4096填充 谢谢。显示下载文件的代码 实现它的一种方法是,在从网络读取数据时循环,并将接收到的字节一直推送到缓冲区,直到其满为止(例如,您的情况为4096),然后处理并清空缓冲区 当您接收到更多可以推送到缓冲区的数据时,您可能还必须处理这些情况

下载文件时,我正在加密字节数组。但是,由于使用了网络,因此即使缓冲区数组的大小固定为4096,也会动态填充数据。当重新解密文件时,我们不使用网络,因此4096字节不断地进入。加密和解密问题发生在这个区域

我想知道的是,下载时进入缓冲区的字节大小如何总是用4096填充


谢谢。

显示下载文件的代码

实现它的一种方法是,在从网络读取数据时循环,并将接收到的字节一直推送到缓冲区,直到其满为止(例如,您的情况为4096),然后处理并清空缓冲区

当您接收到更多可以推送到缓冲区的数据时,您可能还必须处理这些情况

我的两分钱

我想知道的是,下载时进入缓冲区的字节大小如何总是用4096填充

不可能。TCP API可以免费为您提供从1字节到缓冲区大小的任何内容


您需要修复加密和解密代码中的错误。XY问题。

我有一个解决方案。 您可以根据需要获取缓冲区大小。在需要的时候使用它

private boolean readFully(InputStream is, byte[] data, int off, int length) {
    int read;
    while (length > 0) {
        read = is.read(data, off, length);
        if(read <=0){
            return false;
        }

        length -= read;
        off += read;
    }
    return true;
}