Java 针对URL流的InputStream.read()方法的性质
在实习期间,我遇到了如下所示的一个代码段(事实证明,这是这个问题的默认代码段)Java 针对URL流的InputStream.read()方法的性质,java,url,buffer,inputstream,Java,Url,Buffer,Inputstream,在实习期间,我遇到了如下所示的一个代码段(事实证明,这是这个问题的默认代码段) InputStream input = new BufferedInputStream(url.openStream()); OutputStream output = new FileOutputStream(file); byte data[] = new byte[1024]; int total = 0; int
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(file);
byte data[] = new byte[1024];
int total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
output.write(data, 0, count);
}
下面是我的问题。假设数据是2050字节
这在Javadoc中都有说明。I/O操作非常昂贵,因此通常建议对其进行批处理,因此在您的情况下,它是1KB,您可以根据需要将其更改为更多/更少。 您必须记住,它正在阻止调用,所以它太大了,您可能会觉得您的程序没有移动
您不应该逐字节读取数据,因为这是太多的I/O操作,并且程序将全部时间都花在I/O上,所以大小应该取决于您处理数据的速度。@BorisTheSpider No,在读取缓冲区已满之前,它不会阻塞。请参阅Javadoc。@EJP完全正确。轻微的大脑放屁。不回答被问到的问题。同意答案不在要点中,但足以回答问题。