Java IO

Posted xiaoyingbianbianbian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java IO相关的知识,希望对你有一定的参考价值。

IO流的类层次图

 技术分享图片

System.in 是代表InputStream 输入流(字节流),从键盘输入。 

System 类

in 类成员

 [1]字符流和字节流的转换

InputStreamReader  字节流转成字符流,  

InputStreamReader(InputStream in)将字节流以字符流输入
OutputStreamWriter 字符到字节的桥梁 , 
OutputStreamWriter(OutStream  out)将字节流以字符流输出

[2]字符流和字节流的区别

a.字节流没有缓冲区,是直接输出的,不调用close()方法时,就已经输出信息,字符流有缓冲区,且是要输出到缓冲区的。只有在调用close()方法关闭缓冲区时,信息才会输出。要想在未关闭时输出信息,需要手动调用flush()方法。

b.读写单位不同:字节流以8bit ,也就是字节为单位。字符流是以16bit,一个字符为单位。

c.处理对象不同:字节流能处理所有类型的数据,如图片,视频等,而字符流只能处理字符类型的数据,也就是纯文本数据。

 

so

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

解释:System.in :标准输入,从键盘输入的字节流,通过InputStreamReader转换成字符流 放入缓冲区。

 

      java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

 

      从标准输入流中直接读取使用者输入时,使用者每从键盘输入一个字符,System.in就读取一个字符,为了能一次读取一行使用者的输入,使用了BufferedReader来对使用者输入的字符进行缓冲,readLine()方法会在读取到使用者的换行字符时,自一次将整行字符串传入。

 

以上是关于Java IO的主要内容,如果未能解决你的问题,请参考以下文章

java常用的包

Java专栏

JDK重要包

Java StreamFileIO

Java 5-11新特性的整理(转)

Java IO 学习总结 学习手册总结