Java开发笔记_Java IO

作者: Cathy 分类: Java 发布时间: 2023-06-03 03:48

Java IO 流?

  • Java 的 IO 流是用于程序和外部资源 (文件、网络连接等) 间传输数据的机制
  • IO 流分为字节流字符流,分别用来处理二进制数据和文本数据

字节流 vs 字符流区别?

  • 字节流
    • 主要用于处理原始的二进制数据
    • 字节为单位进行读写
    • 适用于处理图像、音频和视频等非文本数据
    • 常见的字节流有 InputStreamOutputStream
  • 字符流
    • 主要处理文本数据
    • 字符为单位进行读写
    • 在读写文本数据时会自动进行字符编码转换
    • 适用于处理各种文本文件
    • 常见的字符流有 ReaderWriter

字节缓冲流 vs 字符缓冲流?

  • 字节缓冲流:
    • 字节缓冲流是字节流的增强版本,用于提高读写效率
    • 字节缓冲流内部维护了一个缓冲区,避免频繁的读写磁盘操作
    • 常见的字节缓冲流包括 BufferedInputStreamBufferedOutputStram
  • 字符缓冲流
    • 字符缓冲流是字符流的增强版本,也用于提高读写效率
    • 字符缓冲流和字节缓冲流类似,但字符缓冲流用于处理字符数据,在读写文本数据时会自动进行字符编码转换

打印流?

打印流能够处理数据的格式化,并自动将数据转换为字符串并输出到目标位置
Java 中有两种类型的打印流:字节打印流 PrintStream 和字符打印流 PrintWriter

  • PrintStream
    • 字节打印流
    • OutputStream 的子类
    • 通常用于将数据输出到标准输出流
  • PrintWriter
    • 字符打印流
    • Writer 的子类
    • 通常用于输出文本数据到文件或控制台
    • 可以进行字符编码的转换

System.out.println() 是什么?

  • System.out 是 Java 标准库的静态对象,是 PrintStream 类的实例,是标准输出流,用于向控制台输出文本信息
  • println() 方法是 PrintStream 类的方法,用于输出一行文本并换行

随机访问流?

  • 随机访问流是一种 IO 流,支持在数据流中的任意位置进行读取和写入操作,不用按照顺序进行
  • 相比于顺序访问流,随机访问流允许以随机的方式访问数据,不需要一次性读取整个文件或数据流
  • 典型的随机访问流包括:随机访问文件流、随机访问网络流

管道流?

  • Java 管道流是一种 IO 流类,用于在两个线程之间创建一个通道,使得一个线程中的输出可以被传递到另一个线程中的输入
  • 通过管道流可以在不同线程之间传递数据,实现线程之间的通信

讲讲 Filter 流?

  • Filter 流是装饰者设计模式的实际应用
  • 用于提供额外的功能或转换数据的能力
  • Filter 流基于底层流,在数据的读取或者写入过程中进行额外的处理,例如数据过滤、数据加密

常见的 IO 模型?

  • BIO(Blocking I/O):
    • 堵塞 IO
    • 每当一个线程进行 IO 操作时,会被阻塞,直到 IO 操作完成
  • NIO(Non-blocking I/O):
    • 非堵塞 IO
    • 线程可以在 IO 操作进行的同时,继续执行其他任务,不用一直等待 IO 操作的完成
  • AIO(Asynchronous I/O):
    • 异步非阻塞 IO
    • 在 IO 操作完成后,通知线程处理接收到的数据,而不需要线程一直轮询等待 IO 操作完成

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注