0
点赞
收藏
分享

微信扫一扫

InputStream类的read()方法返回的int值是如何计算的

InputStream类有一个read()方法,它的返回类型是int。

InputStream类本身是抽象类,它的一些子类的read()方法每次读取一个字节,也就是8个二进制位。

比如读到如下二进制数据:

111111111

以上二进制数据如果按照byte类型来转换,是负数 -1

而read()方法会把它先变成32位的二进制数据:

00000000 00000000 00000000 11111111

以上显然是一个int类型的正整数255

下面再通过一个范例程序来演示。以下代码先通过DataOutputStream的writeByte()方法向test.txt文件写入一个值为-1的字节,实际写入的二进制数据为111111111

接着再通过DataInputStream的readByte()方法读取这个字节,读到的数据为-1。

接着再通过FileInputStream的read()方法读取test.txt文件,读到的数据为255。

import java.io.*;
public class Tester{
  public static void main(String[] args)throws IOException {
    FileOutputStream out1=new FileOutputStream("D:\\test.txt");
    BufferedOutputStream out2=new BufferedOutputStream(out1,2);  //装饰一个文件输出流
    DataOutputStream out=new DataOutputStream(out2);  //装饰一个带缓冲输出流
    out.writeByte(-1);  //写入一个字节
    out.close();
   
    InputStream in1=new FileInputStream("D:\\test.txt");
    BufferedInputStream in2=new BufferedInputStream(in1); //装饰一个文件输入流
    DataInputStream in=new DataInputStream(in2); //装饰一个缓冲输入流
    System.out.println(in.readByte());   //打印-1
    in.close();

    in1=new FileInputStream("D:\\test.txt");
    System.out.println(in1.read());  //打印255
    in1.close();
  }
}

上文参考孙卫琴的经典Java书籍《Java面向对象编程》

InputStream类的read()方法返回的int值是如何计算的_txt文件

举报

相关推荐

0 条评论