java的 InputStream中 read()和readNBytes()的区别在哪?
InputStream类是Java中用于输入字节流的抽象类,它提供了多种方法来从输入流中读取字节数据。其中包括read()和readNBytes()方法,它们的区别如下:
InputStream
read()
readNBytes()
read(): 这是InputStream类中最基本的方法之一。它从输入流中读取一个字节的数据,并将其作为整数返回。如果已经到达流的末尾,则返回值为-1。read()方法的签名如下: java public abstract int read() throws IOException; 例如: java int byteRead = inputStream.read();
java public abstract int read() throws IOException;
java int byteRead = inputStream.read();
readNBytes(byte[] b, int off, int len): 这是Java 9中引入的新方法,它从输入流中读取指定数量的字节数据,并将其存储到提供的字节数组中。该方法会尝试读取指定数量的字节,直到达到指定的长度或者到达流的末尾。如果读取的字节数少于指定的长度,则方法返回实际读取的字节数。readNBytes()方法的签名如下: java public int readNBytes(byte[] b, int off, int len) throws IOException; 例如: java byte[] buffer = new byte[1024]; int bytesRead = inputStream.readNBytes(buffer, 0, 1024);
readNBytes(byte[] b, int off, int len)
java public int readNBytes(byte[] b, int off, int len) throws IOException;
java byte[] buffer = new byte[1024]; int bytesRead = inputStream.readNBytes(buffer, 0, 1024);
主要区别在于: