Java IO/NIO面试题及答案(1-5)

1、Java中的IO和NIO有什么区别?
答:Java IO是基于流的,而Java NIO是基于缓冲区的。Java IO是阻塞的,而Java NIO是非阻塞的。Java IO需要使用较多的线程来处理并发请求,而Java NIO可以使用单个线程处理并发请求。

2、什么是Java NIO的通道(Channel)?
答:通道是Java NIO中用于从文件、网络等数据源读取数据和写入数据的对象。通道与流(Java IO中的概念)类似,但通道可以实现非阻塞读写,而流只能实现阻塞读写。

3、Java NIO中的缓冲区(Buffer)和选择器(Selector)有什么作用?
答:Java NIO中的缓冲区用于存储数据,可以读取和写入数据。缓冲区可以用于在通道和应用程序之间传递数据,提高数据传输的效率。缓冲区还可以使用相对索引和绝对索引访问数据。
Java NIO中的选择器用于实现非阻塞IO。选择器可以监控多个通道,当通道中有数据可读或可写时,选择器会通知应用程序。使用选择器可以实现单线程处理多个通道的IO操作,提高程序的性能。

4、什么是Java IO中的字符流和字节流?有什么区别?
答:Java IO中的字符流用于读取和写入字符数据,而字节流用于读取和写入字节数据。字符流基于字节流实现,字符流一般比字节流更方便处理字符数据,例如文本文件。另外,字符流和字节流在处理数据时使用的API是不同的。

5、Java IO中的File类有什么作用?
答:Java IO中的File类用于表示文件或目录的路径名。可以使用File类创建、删除、重命名文件或目录,查询文件或目录的信息,以及读取或写入文件的内容。