博客
关于我
Java中IO流总介
阅读量:505 次
发布时间:2019-03-07

本文共 2131 字,大约阅读时间需要 7 分钟。

Java IO流是Java程序中处理数据输入输出的重要机制,主要用于读取和写入文件、网络或内存中的数据。Flow(流)在Java中表示数据的传输通道,分为输入流和输出流,根据不同的分类和特性,它们可以被进一步细化。

按流向分类

输入流和输出流是基础的流类型。输入流的职责是读取数据,输出流则负责写出数据。Java中的标准输入流和输出流分别由System.in和System.out表示,分别默认映射为键盘输入和控制台输出。

按流性质分类

原始流和装饰流是根据数据处理的方式划分的。原始流直接操作字节或字符,效率较低。而装饰流通过包装原始流,增加额外功能,如缓存机制,最常见的装饰流是BufferedInputStream和BufferedReader,它们通过缓存数据提升读写效率。

按流类型分类

字节流和字符流是根据处理的数据单位划分的。字节流适用于处理单字节数据,如图片、视频等,效率较高。字符流专门处理二字节字符,如汉字,同样支持缓存流来提高效率。

Java I/O 类型概述

字节流

  • 字节输入流(InputStream)和字节输出流(OutputStream)是最基础的字节流类型。
  • filePath: 四种主要字节流接口:FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream。

字符流

  • 字符输入流(Reader)和字符输出流(Writer)用于处理文本文件。
  • 常用实现: InputStreamReader、OutputStreamWriter。

输出流特点

1. PrintStream(字节输出流)

  • 无对应的输入流。
  • 支持写入基本数据类型,字符串,对象和数组。
  • 满足自动行刷新(默认不开启需手动设置)。
  • 适用于日志记录等场景,但不适合处理大型二进制文件。

2. PrintWriter(字符输出流)

  • 在输出流的基础上增加新功能,适合处理文本数据。
  • 提供完整的I/O操作支持,效率较高。

老生常谈:读取键盘输入

有多种方式读取用户输入:

  • 字节流方式

    InputStream in = System.in;while (true) {    byte[] buffer = new byte[1024];    int readLength = in.read(buffer);    // 处理数据}
  • 字符流方式

    InputStreamReader reader = new InputStreamReader(System.in);while (true) {    char[] buffer = new char[1024];    int readLength = reader.read(buffer);    // 处理数据}
  • 高效读取方式

    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));while (true) {    String input = reader.readLine();    // 处理结果}
  • 对象流

    对象流用于传输Java对象信息,可以管理多个对象的写入和读取。关键点包括:

    • 使用ObjectOutputStreamObjectInputStream进行操作。
    • 对参与序列化的类,需保证实现Serializable接口。
    • 导出serialVersionUID以确保兼容性和一致性。

    ####示例

    // 写入对象ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("test.obj"));oos.writeObject(new Person("张三", 30));// 读取对象ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test.obj"));Person person = (Person) ois.readObject();

    数据流(Data Stream)

    数据流专门处理基本数据类型和字符串信息,具有高效性和灵活性。常见实现包括:

    • ** CellsRus pandCheckedInputStream/OutputStream**
    • ** DataInputStream/DataOutputStream**

    内存流

    内存流是一种特殊的流,它使用内存中的字节数组或字符数组作为数据存储介质。具体实现包括:

    • ByteArrayInputStream/ByteArrayOutputStream
    • CharBufferInputStream/CharBufferOutputStream

    内存流通常用于快速处理和传输数据,特别适用于网络传输场景。

    总结来说,Java中的IO流体系功能强大且灵活,根据不同需求,可以选择合适的流类型和处理方式,充分发挥性能优势。平时开发中,合理选择流的组合和优化,能显著提升程序性能和架构稳定性。

    转载地址:http://khtjz.baihongyu.com/

    你可能感兴趣的文章
    PHP判断数组是否有重复值、获取重复值
    查看>>
    PHP利用正则表达式实现手机号码中间4位用星号(*)替换显示
    查看>>
    PHP加密与安全的最佳实践
    查看>>
    PHP区分 企业微信浏览器 | 普通微信浏览器 | 其他浏览器
    查看>>
    PHP去掉转义符
    查看>>
    php反射api
    查看>>
    PHP反射ReflectionClass、ReflectionMethod 入门教程
    查看>>
    PHP反射机制
    查看>>
    php取当天的最后一秒_Docker快速搭建PHP开发环境详细教程
    查看>>
    php取绝对值
    查看>>
    php各种常用的算法
    查看>>
    php后台“爬虫”模拟登录第三方系统
    查看>>
    php后台的在控制器中就可以实现阅读数增加
    查看>>
    php命令行生成项目结构
    查看>>
    PHP命名空间带来的干扰
    查看>>
    PHP和MySQL Web开发从新手到高手,第1天-搭建PHP开发环境
    查看>>
    php商店管理系统,基于PHP的商店管理系统.doc
    查看>>
    PHP图片处理—PNG透明缩放并生成灰图
    查看>>
    php在liunx系统中设置777权限不起作用解决方法
    查看>>
    PHP基于openssl实现的非对称加密操作
    查看>>