【问题标题】:What's the better way to write 2 byte arrays to an OutputStream?将 2 字节数组写入 OutputStream 的更好方法是什么?
【发布时间】:2012-02-08 22:38:23
【问题描述】:

我有两个字节数组需要写入 Socket 上的 OutputStream。现在我做这样的事情:

byte[] arr1, arr2;
OutputStream os;
os.write(arr1);
os.write(arr2);

我想知道是否最好先组合两个数组(例如使用System.arraycopy())然后再调用一次os.write(combinedArray)

如果重要的话,我是从 Android 的角度来问的。

【问题讨论】:

  • 取决于OutputStream 的实现。
  • 现在我想多了:这就是 BufferedOutputStream 所做的,透明地(至少如果两个数组小于其缓冲区大小)。

标签: java android performance outputstream


【解决方案1】:

我认为从技术上讲,您最好将 OutputStream 包装在 BufferedOutputStream 中并分别编写每个 byte[]。完成写入后,调用 bufferedOutputStream.flush(); BufferedOutputStream 将在其内部缓冲区满时自动写入,无论您使用单独的字节数组写入多少次,并且调用 flush 确保所有数据都被写入。底层的 BufferedOutputStream 将确定何时最有效地为您逻辑组合字节数组,因此您不必让代码因额外的逻辑而变得混乱。

【讨论】:

  • 我认为这取决于数组的长度,您是否计划在写入之间保持流打开或关闭,以及是否有其他进程在远端等待数据到达。如果您只是在写入文件,那么可能不会。如果你正在写一个套接字,那么也许。
猜你喜欢
  • 1970-01-01
  • 2011-06-12
  • 2011-07-04
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
相关资源
最近更新 更多