IO面试题

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 的开头,此时写入数据会从当前数据末尾开始

IO面试题_第1张图片

 

你可能感兴趣的:(面试题,java,面试)