首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么java.io.InputStream ` `read()`方法和` `read(byte[] b)`方法输出的值不一样?

java.io.InputStream的read()方法和read(byte[] b)方法输出的值不一样的原因是因为它们的功能和实现方式不同。

read()方法是InputStream类的基本读取方法,它会从输入流中读取一个字节的数据,并返回该字节的整数表示。如果已经到达流的末尾,则返回-1。这个方法适用于读取单个字节的数据。

read(byte[] b)方法是InputStream类的高级读取方法,它会从输入流中读取一定数量的字节数据,并将其存储到给定的字节数组b中。该方法返回实际读取的字节数量,如果已经到达流的末尾,则返回-1。这个方法适用于读取多个字节的数据。

因此,read()方法输出的是单个字节的整数值,而read(byte[] b)方法输出的是实际读取的字节数量。这是因为read(byte[] b)方法可以一次读取多个字节,而read()方法只能读取一个字节。

对于read()方法,可以使用以下代码示例来读取输入流中的数据:

代码语言:txt
复制
InputStream inputStream = ...; // 输入流对象
int data = inputStream.read();
while (data != -1) {
    // 处理读取到的数据
    // ...
    data = inputStream.read();
}

对于read(byte[] b)方法,可以使用以下代码示例来读取输入流中的数据:

代码语言:txt
复制
InputStream inputStream = ...; // 输入流对象
byte[] buffer = new byte[1024]; // 缓冲区
int bytesRead = inputStream.read(buffer);
while (bytesRead != -1) {
    // 处理读取到的数据
    // ...
    bytesRead = inputStream.read(buffer);
}

需要注意的是,使用read(byte[] b)方法时,需要提供一个合适大小的字节数组作为缓冲区,以便存储读取到的数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python文件读取方法read()、readline()readlines()区别

在Python中,读取文件是一项常见任务。Python提供了多种方法来读取文件内容,其中包括read()、readline()readlines()方法。本文将介绍这些方法区别使用场景。...read() read()方法用于一次性读取整个文件内容,并将其作为一个字符串返回。语法如下: file_object.read() 优点:读取整个文件,将文件内容放到一个字符串变量中。...总结 根据需求和文件大小,选择适合文件读取方法是很重要。如果需要一次性读取整个文件内容并进行处理,可以使用read()方法。如果需要逐行处理较大文件,可以使用readline()方法。...如果需要将文件所有行存储在一个列表中进行处理,可以使用readlines()方法。 记住,在处理文件时,需要注意文件打开关闭操作,并妥善处理可能出现异常。...选择合适文件读取方法可以提高代码效率可读性,并满足对文件内容处理需求。

24630

Python文件读取方法read()、readline()readlines()区别

图片在Python中,读取文件是一项常见任务。Python提供了多种方法来读取文件内容,其中包括read()、readline()readlines()方法。本文将介绍这些方法区别使用场景。...read()read()方法用于一次性读取整个文件内容,并将其作为一个字符串返回。语法如下:file_object.read()优点:读取整个文件,将文件内容放到一个字符串变量中。...总结根据需求和文件大小,选择适合文件读取方法是很重要。如果需要一次性读取整个文件内容并进行处理,可以使用read()方法。如果需要逐行处理较大文件,可以使用readline()方法。...如果需要将文件所有行存储在一个列表中进行处理,可以使用readlines()方法。记住,在处理文件时,需要注意文件打开关闭操作,并妥善处理可能出现异常。...选择合适文件读取方法可以提高代码效率可读性,并满足对文件内容处理需求。

23920

如何利用InputStream类实现文件读取与处理?

InputStream类提供了读取不同类型数据方法,如read()、read(byte[] b)、read(byte[] b, int off, int len)等,这些方法可以读取字节、字符、数组等不同类型数据...在InputStream类中,还有另外两个重要方法,分别是read(byte[] b)read(byte[] b, int off, int len)。...类代码方法介绍  在InputStream类中,最常用方法read()、read(byte[] b)read(byte[] b, int off, int len)方法。...read(byte[] b)方法:一次读取多个字节数据,并将读取字节数据存储到指定字节数组中。返回为实际读取字节数。如果已经到达输入流末尾,则返回-1。...read(byte[] b, int off, int len)方法:读取指定长度字节数据,并存储到指定字节数组中。返回为实际读取字节数。如果已经到达输入流末尾,则返回-1。

41861

初识字节流+实现缓冲字节流OutputStream主要方法构造方法读关流实现BufferedInputStream实现BufferedOutputStream为什么read()返回是Int型而不是

():int read(byte[] array):int 与Reader类一样,如果到了文件末尾,返回-1 这里有个特别好用方法,可以用来知道文件大小 available():int...+]&255);//防止出现读到11111111此时错误返回了-1 } //重载read public int read(byte[] bytes)throws IOException...[])会比write(int)快得多多 输入缓冲就是先把数据存在数组中,从数组中一个个读到控制台 输出缓冲就是把数据存到数组中,再一起写到OutputStream中缓冲区,最后在刷新 刚刚用这个复制一个...11.1MMP3花了0.6秒,系统时间差不多↖(^ω^)↗!!...---- 错误返回了-1 如果扫描到了11111111那么此时将byte->int是-1,如果这样的话,程序就会终止不会进行 为什么read()返回是Int型而不是byte型呢??

1.2K80

File类基本操作之InputStream字节输入流

[] b = new byte[1024]; in.read(b); //4.关闭 in.close(); System.out.println(new String(b));//变成字符串输出...[] b = new byte[1024]; int len = in.read(b);//读取内容 //4.关闭 in.close(); //解决遗留问题,看String提供方法...= (byte) in.read(); } // int len = in.read(b);//读取内容 //4.关闭 in.close(); //解决遗留问题,看String...提供方法 System.out.println(new String(b));//变成字符串输出 } } 当不知道读取内容有多大时候,就仅仅能以读取数据是否为-1为读完标志 package...,看String提供方法 System.out.println(new String(b,0,len));//变成字符串输出 } } 贴太快了~几乎吧程序关了~ 发布者:全栈程序员栈长,转载请注明出处

19120

Java之IO流概述File基本操作

:   int read(): 每次调用这个方法, 就读取一个字节, 以整数形式返回,可以用 char 强转成字符   int read(byte[] buffer---缓冲区): 让流每次读满一个缓冲区..., 再统一处理, 先存在缓冲区里, 返回int是返回实际当中读取了多少字节数(伤硬盘原理)   int read(byte[] buffer, int offset, int length):...基本方法:   void write(int b)   void write(byte[] b)   int wirte(byte[] buffer, int offset, int...length)   close()   flush(): 将缓冲区中文件全部写出   在使用流时候:先flush, 再close Reader基本方法:   int...=-1){//将下一个字符赋给a并输出写入,如果没有下一个 则a=-1结束while循环 21 System.out.print((char)a);//强转输出字符 22

77290

网络编程(TCP服务端客户端互访阻塞)

()方法,获取到OutputStream对象 调用OutputStream对象write()方法输出输出数据,参数:byte[]字节数组 调用Socket对象getInputStream()方法...,获取到InputStream对象 调用InputStream对象read()方法,读取数据得到读取长度,参数:byte[]字节数组 获取String对象,new出来,构造参数:byte[]字节数组...,0开始,len长度 调用Socket对象close()方法,关闭socket 客户端输入流读取read()方法,是阻塞式方法,会在这里等待服务端返回数据 服务端: 获取ServerSocket对象...调用Socket对象getOutputStream()方法,得到输出流对象,输出数据 调用Socket对象close()方法,关闭socket 调用ServerSocket对象close()方法...[] b=new byte[1024]; int len=in.read(b);//这里会阻塞,等待服务端返回 System.out.println(new String

1.3K30

Java网络编程Java流介绍

因为每次写入一个字节效率不高,所以就又提供了两个可以传入字节数组方法,write(byte[])、write(byte b[],int off,int len)。...输入流 Java基本输出流类是:java.io.InputStream; 这个类提供了将数据读取为原始字节所需要基本方法。...一次读取1字节效率也不高,因此,有两个重载read()方法,可以用从流中读取多字节数据填充一个指定数组:read(byte[] input)read(byte[] input, int offset...,所以要防止这种事情出现需要先测试read()返回,然后再增加到byteRead中 如下所示: int bytesRead = 0; int bytesToRead = 1024; byte[] input...每个过滤器输入流都有与java.io.InputStream相同read()、close()available()方法。 过滤器通过其构造函数与流连接。

84540

Java(io流—字节输入流、字节输出流)

flush():刷新此输出流并强制写出所有缓冲输出字节 void write(byte[] b):将 b.length 个字节从指定 byte 数组写入此输出流。...,把数据写入到文件中; 释放资源; 一次写多个字节方法 void write(byte[] b):将 b.length 个字节从指定 byte 数组写入此输出流; void write(byte[]...java.io.InputStream:字节输入流 共性方法: void close() :关闭此输入流并释放与该流关联所有系统资源; abstract int read():从输入流中读取数据下一个字节...对象中read方法,读取文件; 释放资源; int read():读取文件中一个字节并返回,读取到文件末尾返回-1; int read(byte[] b) 方法参数byte作用?...i byte[] bytes=new byte[1024];//创建一个数组 int read = file2.read(bytes);//返回为有效字节数 while ((i=file2.read

71120

网络编程(TCP-并发上传图片)

int端口号 调用Socket对象getOutputStream()方法,得到OutputStream输出流对象 获取FileInputStream对象,new出来,构造参数:String文件路径...while循环调用,条件FileInputStream对象read()方法,读取到字节数组中 循环中,调用OutputStream输出流对象write()方法,写入数据,参数:byte[],0,len...输入流对象read()方法,读取,并打印 调用FileInputStream对象close()方法 调用Socket对象close()方法 服务端: 正常读取 解决并发 上面的例子,一次只能有一个客户端服务...1 判断是文件,并且存在 File对象exists()方法isFile()方法 判断文件后缀,File对象getName().endsWith(“.jpg”)方法 判断文件大小,File对象length...[1024]; int len = 0; while ((len = fileInputStream.read(b)) !

37220

JAVA面试基础「建议收藏」

3.字节流常用方法?   4.说说字符流?   5.说说缓冲流?   6.说说序列化反序列化? 五、输入输出流IO流   1.File类常用方法?   ...InputStream 常用方法 方法 描述 int read() 以字节为单位读取数据 int read(byte b[]) 将数据存入 byte 类型数组中,返回数组中有效数据长度 int read...(byte b[],int off,int len) 将数据存入 byte 数组指定区间内,返回数组长度 byte[ ] readAllBytes() 将所有数据存入 byte 数组并返回 int available...OutputStream常用方法 方法 描述 void write(int b) 以字节为单位输出数据 void write(byte b[ ]) 将byte数组中数据输出 void write(byte...b[ ],int off,int len) 将byte数组中指定区间数据输出 void close() 关闭数据流 void flush() 将缓冲流中数据同步到输出流中 FileOutputStream

94620

Java 网络编程

在构造时候会自动创建Socket对象并执行绑定端口、监听端口操作 调用对象 accept 方法等待连接 调用对象 getInputStream getOutputStream 获取输入输出流...,并通过输入输出流来进行收发数据 在不用时调用 close 方法关闭套接字 Socket 类使用步骤如下: 创建 Socket 对象 调用 connet 方法连接到指定服务器端口(或者在构造时传入服务器端口进行连接...) 调用对象 getInputStream getOutputStream 获取输入输出流,并通过输入输出流来进行收发数据 在不用时调用 close 方法关闭套接字 一个普通TCP通信实例如下...getBytes()); byte[] bytes = new byte[1024]; int len = is.read(bytes);...[] buff = new byte[1024]; while((len = fis.read(buff)) !

65520

深入理解JavaSE输入输出流:掌握数据流动奥秘

判断length,如果不为-1,表示还有数据可以读取,则使用out.write(buffer, 0, length)方法将读取到数据写入目标文件。...循环继续,直到length为-1,即文件读取完毕。 关闭输入流输出流。 输出"文件复制成功!"。 捕获可能抛出IOException异常,并打印异常信息。   ...类代码方法介绍 InputStream类 int read():读取一个字节数据。 int read(byte[] buffer):读取一组字节数据,并存储到指定字节数组中。...OutputStream类 void write(int b):写入一个字节数据。 void write(byte[] buffer):写入一组字节数据。 void close():关闭输出流。...该类重写了InputStreamread()方法,实现了从一个固定byte数组data中读取数据功能。   在MyInputStream类中,定义了一个私有的byte数组data,用于存储数据。

25822

JavaSE(十二)之IO流字节流(一)

数据以二进制形式在程序与设备之间流动传输,就想水在管道里流动一样,所以就把这种数据传输方式称之为输入流输出流二、流分类       1)按照流方向分为输入流输出流       2)按照处理数据单位不同分为字节流字符流...-1 public int read(byte[] b){..}     ...把读到字节存到字节数组b中,并返回本次读到了多少个字节 public int read(byte[] b,int off,int len){..}     ...将此流重新定位到最后一次对此输入流调用mark方法位置 1.2、OutputStream     1)方法介绍  public abstract void write(int b);     将指定字节写入此输出流...将字节数组b所有字节写入此输出流  public void write(byte[] b,int off,int len){..}

86780

java学习笔记(基础篇)—IO流

带有缓冲区 三:常用流 a)java.io.InputStreamjava.io.OutputStream 分别表示字节输入流字节输出流, 是所有字节输入输出父类.其中方法参照下面的四...如果遇到输入流结尾,则返回-1; b)int read(byte[] b): 从输入流读取若干个字节,把它们保存到参数b指定字节数组中。返回整数表示读取字节数。...如果遇到输入流结尾,则返回-1; c)int read(byte[] b, int off, int len): 从输入流读取若干个字节,把它们保存到参数b指定字节数组中。...OuputStream类提供了一系列写数据有关方法: write(): 向输出流写入数据:有三种重载形式: a)void write(int b):向输出流写入一个字节; b)void write...(byte[] b): 把参数b指定字节数组中所有字节写到输流; c)void write(byte[] b, int off, int len): 把参数b指定字节数组中所有字节写到输出流,参数

93410

网络编程

软件结构 C/S B/S 网络通信协议 协议就是个规则 网络通信协议分类 UDP TCP/IP 端口号 ? TCP通信 ?...实现步骤: 1.创建一个客户端对象Socket,构造方法绑定服务器IP地址端口号 2.使用Socket对象中方法getOutputStream()获取网络字节输出流OutputStream对象 3...对象,构造方法中绑定要读取数据源 2.创建一个客户端Socket对象,构造方法中绑定服务器IP地址端口号 3.使用Socket中方法getOutputStream,获取网络字节输出流OutputStream...对象 4.使用本地字节输入流FileInputStream对象中方法read,读取本地文件 5.使用网络字节输出流OutputStream对象中方法write,把读取到文件上传到服务器 6.使用Socket...read,读取客户端上传文件 7.使用本地字节输出流FileOutputStream对象中方法write,把读取到文件保存到服务器硬盘上 8.使用Socket对象中方法getOutputStream

45020

java学习笔记(基础篇)—IO流

带有缓冲区 三:常用流 a)java.io.InputStreamjava.io.OutputStream 分别表示字节输入流字节输出流, 是所有字节输入输出父类.其中方法参照下面的四 b...如果遇到输入流结尾,则返回-1; b)int read(byte[] b): 从输入流读取若干个字节,把它们保存到参数b指定字节数组中。返回整数表示读取字节数。...如果遇到输入流结尾,则返回-1; c)int read(byte[] b, int off, int len): 从输入流读取若干个字节,把它们保存到参数b指定字节数组中。...OuputStream类提供了一系列写数据有关方法: write(): 向输出流写入数据:有三种重载形式: a)void write(int b):向输出流写入一个字节; b)void write...(byte[] b): 把参数b指定字节数组中所有字节写到输流; c)void write(byte[] b, int off, int len): 把参数b指定字节数组中所有字节写到输出流,

81510

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券