Java面试锦集 之 二、Java IO

二、Java IO

1. IO 里面的常见类,字节流,字符流,接口,实现类,方法阻塞?

常见类:

  • 字节流:FileInputStream(文件输入字节流)、FileOutputStream(文件输出字节流)等。
  • 字符流:BufferedReader(缓冲字符输入流)、BufferedWriter(缓冲字符输出流)等。

接口:

  • InputStream(输入流接口)
  • OutputStream(输出流接口)
  • Reader(字符输入流接口)
  • Writer(字符输出流接口)

实现类:

除了上面提到的,还有如ByteArrayInputStream、DataInputStream等很多。

关于方法阻塞:

java 中的阻塞式方法是指在程序调用改方法时,必须等待输入数据可用或者检测到输入结束或者抛出异常,否则程序会一直停留在该语句上,不会执行下面的语句。比如read()和readLine()方法。

2. 谈谈对NIO的认知?

NIO(New Input/Output)主要有以下特点和优势:

  • 非阻塞特性: 它可以让一个线程同时处理多个通道的 I/O 操作,而传统的 IO 往往是阻塞式的,一个线程通常只能处理一个连接。
  • 通道和缓冲区: 通过通道来进行数据传输,数据被存储在缓冲区中,方便进行读写操作。
  • 可扩展性强: 更适合高并发场景,能有效提高系统的性能和吞吐量。
  • 支持选择器: 可以用一个选择器来管理多个通道的事件,如连接建立、数据可读等,从而高效地监控和处理大量的连接。

它为构建高性能的网络应用提供了有力支持,尤其在处理大规模并发连接时表现出色。

3.字节流和字符流的区别?

  1. 处理的数据单元: 字节流以字节(8 位二进制)为单位进行数据处理;字符流以字符(通常是 16 位 Unicode 字符)为单位。
  2. 编码问题: 字符流会考虑字符编码,能自动处理不同的字符集转换;字节流则不关心编码问题。
  3. 适用场景: 字节流适用于处理二进制数据,如图片、音频、视频等;字符流更适合处理文本文件。
  4. 读取方式: 字节流读取出来的是原始的字节数据;字符流读取出来的是经过编码转换后的字符。

更新中……

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值