简单摘抄一下有关Java输入输出的概念
IO简介:
目的:用于实现“文件、控制台和网络设备之间的通信”。
所谓“流”:
一种抽象的数据的总称呼,本质在于能够进行传输。
按照数据的流向,可分为:输入流和输出流;
按照“流”处理数据的单位,可分为:字节流和字符流。在Java中,字节占一个Byte,八位;字符占两个Byte,16位。
IO框架:
以字节为单位的输入流的框架图:
1.InputStream是以字节为单位的输入流的超类,提供read()借口从输入流中读取字节数据;
2.ByteArrayInputStream是字节数组输入流,内部包含一个缓冲区,该缓冲区包含从流中读取的字节;
3.PipedInputStream是管道输入流,实现多线程通信中的管道通信;
4.FilterInputStream是过滤输入流;
5.DateInputStream是数据输入流,用来装饰其他输入流;
6.BufferedInputStream是缓冲输入流,为另一个输入流添加缓冲功能;
7.FileInputStream是文件输入流,通常用于对文件的读取。
以字节为单位的输出流的框架图:
以字符为单位的输入流的框架图:
1.reader是以字符为单位的输入流的超类;
2.CharArrayReader是字符数组输入流;
3.BufferedReader是字符缓冲输入流;
4.InputStreamReader是字节转字符输入流,是字节流向字符流的桥梁;
以字符为单位的输出流的框架图
着重介绍遇到的几种输入流:
BufferedReader:
创建BufferReader时,我们会通过它的构造函数指定某个Reader为参数。BufferReader会将该Reader中的数据分批读取,每次读取一部分到缓冲中;操作完缓冲中的这部分数据之后,再从Reader中读取下一部分的数据。
缓冲流可以提高效率。
InputStreamReader
使用指定的字符集读取字节并将它们解码为字符;
字节本质是八个二进制位,不同字符集对同一字节解码后的字符结果不同,因此在读取字符是应制定合适的字符集,避免读取内容产生乱码。
其他
Scanner类
这是一个用于扫描输入文本的新的实用程序
常用方法:nextInt()、next()、nextLine()。
nextInt():只读取int值
next():读取输入直到空格;
nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号。
System.in
用于读取标准输入设备数据,(从标准输入获取数据,一般是键盘)。