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面向对象编程》
标签:read,in1,InputStream,int,test,new,txt,out From: https://blog.51cto.com/sunweiqin/7859861