何时使用read()或read(byte [])或BufferedInputStream?

时间:2016-04-02 08:06:09

标签: java

何时逐字节使用 @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: dX = view.getX() - event.getRawX(); dY = view.getY() - event.getRawY(); break; case MotionEvent.ACTION_MOVE: view.setY(event.getRawY() + dY); view.setX(event.getRawX() + dX); break; default: return false; } return true; } 以及何时使用read()字节数组。我认为阅读read(byte[])数组总是更好。那么你能举例说明在哪里使用read(byte[])逐字节或read()字节数组。 OR BufferedInputStream。?

读者也是如此。

2 个答案:

答案 0 :(得分:0)

有时你不能分配一个输入缓冲区(非常有限的内存),所以你逐字节地处理输入。

所有BufferedInputStream真正做的是它为您管理byte[]缓冲区并在后台调用read(byte[])。然后,您可以一次调用read()一个字节,而不必担心系统调用的开销。

如果您只想读取N个字节并存储它们,分配byte[N]并将其传递给read(byte[])就完全没问了。

答案 1 :(得分:0)

这是我一段时间以来所考虑的事情,我做出的决定可能会对你有所帮助。所以,这是我的2美分。

在某些情况下,假设您想要读取一百万字节的数据。传递这些字节的数组将需要顺序分配一百万字节。在受限制的环境中,这可能是非常有问题的。因此,您最好逐字节读取,然后根据要求处理它们。

BufferedInputStreamByteBuffer和排序,只是帮助您以更简单,更简化的方式管理对字节数组的访问。