Java输入流中的read(byte[] b)方法如何实现高效读取并处理大量数据流?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1741个文字,预计阅读时间需要7分钟。
我就不多说了,大家直接看代码吧。public int read(byte[] b) throws IOException,从输入流中读取一定数量的字节,并存放到b数组中。这个方法会返回读取的字节数。
我就废话不多说了,大家还是直接看代码吧~
public int read(byte[] b) throws IOException
从一个输入流中读取一定数量的字节,并将这些字节存储到其缓冲作用的数组b中。这个函数会返回一次性读取的字节数。
这个函数是一个阻塞式的函数,当它读到有效数据、确认的文件尾(EOF)或者抛出一个异常时它才会执行其他语句,否则一直停在read()函数处等待。
比如下面的列子:
ServerSocket server = new ServerSocket(port) Socket client = server.accept(); BufferedInputStream bis = new BufferedInputStream(client.getInputStream);
byte[] box = new byte[1024]; int len = 0; while(-1!=(len = bis.read(box))) { System.out.println(len); String msg = new String(box, 0, len); }语句1;语句二;
在这种情况下,当从客户端接收了一条信息并转成msg字符串后,while循环会又回到read()函数,不会跳出循环执行语句一和二。
本文共计1741个文字,预计阅读时间需要7分钟。
我就不多说了,大家直接看代码吧。public int read(byte[] b) throws IOException,从输入流中读取一定数量的字节,并存放到b数组中。这个方法会返回读取的字节数。
我就废话不多说了,大家还是直接看代码吧~
public int read(byte[] b) throws IOException
从一个输入流中读取一定数量的字节,并将这些字节存储到其缓冲作用的数组b中。这个函数会返回一次性读取的字节数。
这个函数是一个阻塞式的函数,当它读到有效数据、确认的文件尾(EOF)或者抛出一个异常时它才会执行其他语句,否则一直停在read()函数处等待。
比如下面的列子:
ServerSocket server = new ServerSocket(port) Socket client = server.accept(); BufferedInputStream bis = new BufferedInputStream(client.getInputStream);
byte[] box = new byte[1024]; int len = 0; while(-1!=(len = bis.read(box))) { System.out.println(len); String msg = new String(box, 0, len); }语句1;语句二;
在这种情况下,当从客户端接收了一条信息并转成msg字符串后,while循环会又回到read()函数,不会跳出循环执行语句一和二。

![Java输入流中的read(byte[] b)方法如何实现高效读取并处理大量数据流?](/imgrand/n2N4kS2S.webp)