目录
前言
本文章是在学习过程中的问答整理与总结,不定时更新,仅供参考。
一、I/O
1.Java I/O流有什么特点?
1.先进先出:最先写入输出流的数据,最先被输入流读取到
2.顺序执行:可以一个一个地往流中写入一串字节,读出时也将按写入顺序读取一串字节,不能随机访问中间的数据
3.只读或只写:每个流只能是输入流或者输出流的一种,不能同时具备两个功能,输入流只能进行读操作,输出流只能进行写操作,在一个数据传输管道中,如果既要写入操作,又要读取操作,则要分别提供两个流
2.Java I/O流分为哪几个类型?
1.按数据流的方向(实际的I/O操作)
输入流:从文件读入到内存,只能进行读操作。
输出流:从内存读出到文件,只能进行写操作。
2.按读写的单位大小
字节流:以字节为单位,每次读入读出为8位数据,可以读取任何类型的数据(图片、文件、音乐、视频等,且Java代码接收数据只能为 byte [] 数组)
字符流:以字符为单位,每次读入读出为16位数据,只能读取字符类型数据(Java代码接收数据一般为char数组,也可以为别的)
3.按读写时是否直接与硬盘、内存等节点连接
节点流:直接与数据源相连(如直接操作数据的流类:FileInputStream)
处理流:又叫包装流,对一个已存在的流的连接进行封装,通过所封装的流的功能调用,实现数据读写。如添加个Buffer缓冲区
3.字节流如何转换成字符流?
字节输入流转字符输入流,通过 InputStreamReader 实现,该类的构造函数可以传入
InputStream对象。
字节输出流转字符输出流,通过 OutputStreamWriter 实现,该类的构造函数可以传入OutputStream对象
4.字节流和字符流哪个更好一些
个人来说,字符流更好用一些,因为许多在字符流中存在的特性,字节流中并不存在,比如使用BufferedReader 而不是 BufferedInputStream 或 DataInputStream,使用newLine()方法来读取下一行,而在字节流中还需要额外的操作。
总结
本文所写内容由翻阅整理所得,不定时更新,仅供参考。