Java BufferedOutputStream : How many bytes to write

标签 java download bufferedinputstream bufferedoutputstream

这更像是一个良心问题,而不是一个技术问题: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/

相关文章:

Java + Hibernate4 + GWT + App Engine = InitialContext 错误

jquery - 通过 jQuery 下载八位字节流

java - 在Java中播放时将mp3文件写入磁盘

java - Selenium webdriver 显式等待警报抛出 UnhandledAlertException

java - 为什么 Kafka 消费者在启动时抛出 "java.lang.NoClassDefFoundError: kafka/consumer/ConsumerConfig"?

java - 找出目录中所有文件的创建、访问或修改日期

java - BOS/BIS 取得进展

javascript - Angular2 FileSaver.js

PHP保护PDF和DOC

java - 监控 BufferedInputStream 下载进度