Java 如果我以较大的块(即大于1024字节)上载一个大文件,会发生什么情况?
因此,我有一个大文件~20MB,必须上传到web服务器,我遵循以下方法:Java 如果我以较大的块(即大于1024字节)上载一个大文件,会发生什么情况?,java,android,http,design-patterns,Java,Android,Http,Design Patterns,因此,我有一个大文件~20MB,必须上传到web服务器,我遵循以下方法: 从存储器输入流读取文件 创建大小1024的字节缓冲区 创建一个输出流并将字节缓冲区写入其中 重复步骤2和3,直到文件完全读写 现在,我有几个问题 要上传这样一个大文件,我必须重复步骤2和步骤3,重复20*1024次。如果我想减少迭代次数,即将字节缓冲区的大小增加到4096,从而减少迭代次数20*256,该怎么办。除了android上的outofmemory之外,这会带来什么后果 如果我根据运行时在android上创建的
- 从存储器
输入流读取文件
- 创建大小1024的
字节缓冲区
- 创建一个
并将输出流
字节缓冲区写入其中
- 重复步骤2和3,直到文件完全读写
字节缓冲区的大小增加到4096,从而减少迭代次数20*256
,该怎么办。除了android上的outofmemory之外,这会带来什么后果
回答你的问题:
将缓冲区增加到100K,看看会发生什么。您可以自己轻松地调查上传速度上的缓冲区大小。为什么问我们?100k不会导致
outofmemory
?再次:尝试并找出答案。这些都是你自己可以做的简单测试。这不是我唯一的怀疑,而是其他的怀疑之一加2。不,您不必更改Web服务器。加3。这是不可能的。您将无法在http服务器发送的有关接收到的块的消息之间进行切换。您可以发送任意数量的数据块,这些数据块将被操作系统接受,但可能无法到达服务器。只有当您完成并开始阅读响应时,您才知道所有内容都已收到。加4。是的TCP/IP保证了这一点。顶部答案-没什么好说的!