当前位置: 首页 > article >正文

【IO面试题 一】、介绍一下Java中的IO流

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。

面试官:介绍一下Java中的IO流

参考答案:

IO(Input Output)用于实现对数据的输入与输出操作,Java把不同的输入/输出源(键盘、文件、网络等)抽象表述为流(Stream)。流是从起源到接收的有序数据,有了它程序就可以采用同一方式访问不同的输入/输出源。

  • 按照数据流向,可以将流分为输入流和输出流,其中输入流只能读取数据、不能写入数据,而输出流只能写入数据、不能读取数据。

  • 按照数据类型,可以将流分为字节流和字符流,其中字节流操作的数据单元是8位的字节,而字符流操作的数据单元是16位的字符。

  • 按照处理功能,可以将流分为节点流和处理流,其中节点流可以直接从/向一个特定的IO设备(磁盘、网络等)读/写数据,也称为低级流,而处理流是对节点流的连接或封装,用于简化数据读/写功能或提高效率,也称为高级流。

Java提供了大量的类来支持IO操作,下表给大家整理了其中比较常用的一些类。其中,黑色字体的是抽象基类,其他所有的类都继承自它们。红色字体的是节点流,蓝色字体的是处理流。
在这里插入图片描述
根据命名很容易理解各个流的作用:

  • 以File开头的文件流用于访问文件;

  • 以ByteArray/CharArray开头的流用于访问内存中的数组;

  • 以Piped开头的管道流用于访问管道,实现进程之间的通信;

  • 以String开头的流用于访问内存中的字符串;

  • 以Buffered开头的缓冲流,用于在读写数据时对数据进行缓存,以减少IO次数;

  • InputStreamReader、InputStreamWriter是转换流,用于将字节流转换为字符流;

  • 以Object开头的流是对象流,用于实现对象的序列化;

  • 以Print开头的流是打印流,用于简化打印操作;

  • 以Pushback开头的流是推回输入流,用于将已读入的数据推回到缓冲区,从而实现再次读取;

  • 以Data开头的流是特殊流,用于读写Java基本类型的数据。


http://www.kler.cn/a/105815.html

相关文章:

  • 视觉SLAM相机——单目相机、双目相机、深度相机
  • QList和QSet常用操作(查找、插入、排序、交集)
  • 一体化运维监控管理平台:产品架构与功能解析
  • 如何对AWS进行节省
  • STL序列式容器之list
  • 3356. 零数组变换 Ⅱ
  • redis缓存击穿 穿透
  • ​如何使用ArcGIS Pro制作一张地形图
  • 1.初识MySQL
  • Leetcode链表问题汇总
  • AI口语APP的实现
  • 嵌入式面试3(C++相关)
  • 前端入门(一)JavaScript语法、数据类型、运算、函数
  • openEuler 22.03 LTS 环境使用 Docker Compose 一键部署 JumpServer (all-in-one 模式)
  • 前端性别判断
  • SpringBoot集成Redis Cluster集群(附带Linux部署Redis Cluster高可用集群)
  • Runner GoUI自动化测试发布
  • Talk | 纽约州立宾汉姆顿大学博士生丁琰:开放环境中机器人的任务与动作规划
  • 一致性hash算法
  • 搜维尔科技:【应用】配备MTi-3的轻便型ROV,在水下进行地理标记视觉检测
  • Vue3-小兔鲜项目
  • 【Linux】安装部署Redis
  • 思维导图软件 ConceptDraw MINDMAP mac中文特色介绍
  • 时序预测 | Python实现ARIMA-LSTM自回归移动差分模型结合长短期记忆神经网络时间序列预测
  • linux 音视频架构 linux音视频开发
  • 程序包com.sun.xml.internal.bind.marshaller不存在