java中read()方法的原理是什么?

Python013

java中read()方法的原理是什么?,第1张

既然你能看到这个方法的源代码,那你也应该能看到FilterInputStream类的其它方法的源代码,FilterInputStream类中有十个方法和一个InputStream类型的变量,变量名是in。

十个方法里有九个是重写InputStream类的方法,并且八个是直接调用变量in的同名同参方法,另一个也只是在调用in的方法时填了两个默认参数。

而十个方法中的另一个方法是构造方法,参数是InputStream的,在方法中,直接把这个参数赋给了变量in。

所以FilterInputStream实质上只是对InputStream类做了一个简单的封装,实际调用的方法是在构造方法里传过来的InputStream对象的方法。

所以想看read()方法的具体实现,应给去找InputStream类或InputStream类的子类

    java中read方法返回的int类型:如果返回char, 那么无法表示流末尾. char的取值范围是从0到65535。这个范围内的所有字符, 都有可能在数据中出现。需要使用一个不可能在数据中出现的值来表示流末尾。那么Java中就是用-1来表示这个末尾的, 因为-1不会在数据中出现。而为了返回-1, 那么只能用int。当流中读取到一个字符时, read()方法内部就会当作int返回, 如果读到流末尾, 直接返回-1。