1.什么是IO流?
一种数据的流,从源头留到目的地,
2.java中有集中类型的流?
按照单位大小:字符流,字节流。按照流的方向:输出流,输入流。
3.字节流和字符流哪个好?怎么选择?
1.绝大对数情况下使用 字节流会更好,因为字节流是字符流的包装,而大多数io操作都是直接操作磁盘文件,所以这些流在传输时都是以字节的方式进行的
2.如果对于操作需要通过IO在 内存中频繁处理字符串的情况使用字符流会好些,因为字符流具备缓冲区,提高了性能
4.读取数据量大的文件时,速度会很慢,如何选择流?
字节流时,选择BufferedInputStream和BufferedOutputStream。
字符流时,选择BufferedReader和BufferedWriter
5.buffer读写数据基本操作
1,将数据写入buffer
2.调用buffer.flip()
3.将数据从buffer中读取出来
4.调用buffer.clear()
再写buffer的时候,buffer会跟踪写入了多少数据,需要读buffer的时候,需要调用flip()来将buffer从写模式切换成读模式,读模式只能读取写入的数据,而非整个buffer。
当数据都读完了,你需要清空buffer以供下次使用,可以有2种方法来操作:调用clear()或者调用compact()
区别:clear()方法清空整个buffer,compact方法只清除你已经读取的数据,没读取的数据会被转移到buffer 的开头,此时写入数据会从当前数据末尾开始