这更像是一个良心问题,而不是一个技术问题:p 我正在编写一些 java 代码来从服务器下载文件...为此,我使用 BufferedOutputStream 方法 write() 和 BufferedInputStream 方法 read()。
所以我的问题是,如果我使用缓冲区来保存字节,那么要读取的字节数应该是多少?当然,我可以仅使用 int byte = read() 然后 write(byte) 读取字节到字节,或者我可以使用缓冲区。如果我采用第二种方法,在定义每次读\写的字节数时,是否有什么方面必须注意?这个数字会对我的程序产生什么影响?
谢谢
最佳答案
除非您有非常快的网络连接,否则缓冲区的大小几乎没有什么区别。我想说 4k 缓冲区就可以了,尽管使用更大一点的缓冲区也没有坏处。
同样的情况可能适用于使用 read()
与 read(byte[])
...假设您使用的是 BufferedInputStream
.
除非您拥有非常快/低延迟的网络连接,否则瓶颈将是网络和计算机网络接口(interface)可以维持的数据速率。对于典型的互联网连接,应用程序传输数据的速度比网络快两个或多个数量级。因此,除非您做了一些愚蠢的事情(例如在无缓冲流上执行 1 字节读取),否则您的 Java 代码不会成为瓶颈。
关于Java BufferedOutputStream : How many bytes to write,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10797628/