gpt4 book ai didi

java - 收到的每个数据包上都有新的 FileOutputStream 吗?或者保持 FileOutputStream 打开?

转载 作者:行者123 更新时间:2023-12-01 14:59:05 25 4
gpt4 key购买 nike

我希望这是一个直接的设计问题。

上下文:

我可能正在通过套接字连接下载一个到多个文件。当从套接字读取字节[]时,我正在传递它们。我还知道将这些字节写入哪个文件。我将这些字节附加到文件中 FileOutputStream 。当文件的所有字节都已收到时,我也会收到通知。

问题:

这样更好吗:

  1. 保留 FileOutputStream打开直到所有字节都已被接收并写入
  2. 打开一个新FileOutputStream它将在收到字节时将字节附加到正确的文件中,然后每次关闭。

2 对我来说感觉更安全,因为我会在每次写入后关闭流,以防任何下载出现问题(比如我因某种原因停止获取字节)。但它似乎也不是很有效率。我无法找出打开和关闭的费用FileOutputStream s群岛除了需要额外注意了解何时关闭 FileOutputStream 之外,保持 FileOutputStream 打开还有其他副作用吗?

提前致谢。

最佳答案

您可以通过计时重新打开文件(例如 100 或 1000 次)所需的时间来测试重新打开文件的成本。

在我的机器上,大约需要 2.1 毫秒,因此如果文件速度为 750 KB/s 或更高,下载文件的速度可能会变慢。

如果您有一个不完整的文件,您是否想保持它正常,或者您宁愿知道该文件已损坏,甚至在无法正确下载时将其删除?

关于java - 收到的每个数据包上都有新的 FileOutputStream 吗?或者保持 FileOutputStream 打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13936505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com