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

Java 中 IO 流分为几种?

Java 中 IO 流分为几种?

在Java中,I/O(输入/输出)流用于处理输入和输出操作。I/O 流分为两大类:字节流和字符流,每个类别又分为输入流和输出流。

字节流(Byte Streams):

字节流以字节为单位进行操作,适用于处理二进制数据。

  1. 输入字节流:

    • InputStream 是所有输入字节流的抽象基类。

      InputStream inputStream = new FileInputStream("example.txt");
      int data = inputStream.read(); // 读取一个字节
      
  2. 输出字节流:

    • OutputStream 是所有输出字节流的抽象基类。

      OutputStream outputStream = new FileOutputStream("output.txt");
      outputStream.write(data); // 写入一个字节
      

字符流(Character Streams):

字符流以字符为单位进行操作,适用于处理文本数据。

  1. 输入字符流:

    • Reader 是所有输入字符流的抽象基类。

      Reader reader = new FileReader("example.txt");
      int data = reader.read(); // 读取一个字符
      
  2. 输出字符流:

    • Writer 是所有输出字符流的抽象基类。

      Writer writer = new FileWriter("output.txt");
      writer.write(data); // 写入一个字符
      

缓冲流(Buffered Streams):

缓冲流通过缓冲区提高了 I/O 操作的性能,分为字节缓冲流和字符缓冲流。

  1. 字节缓冲流:

    • BufferedInputStreamBufferedOutputStream

      InputStream inputStream = new FileInputStream("example.txt");
      BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
      int data = bufferedInputStream.read(); // 通过缓冲区读取一个字节
      
    • BufferedOutputStream 同样用于提高输出性能。

  2. 字符缓冲流:

    • BufferedReaderBufferedWriter

      Reader reader = new FileReader("example.txt");
      BufferedReader bufferedReader = new BufferedReader(reader);
      String line = bufferedReader.readLine(); // 通过缓冲区读取一行字符
      
    • BufferedWriter 同样用于提高输出性能。

对象流(Object Streams):

对象流用于读写对象,包括字节对象流和字符对象流。

  1. 字节对象流:

    • ObjectInputStreamObjectOutputStream

      ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("objects.dat"));
      objectOutputStream.writeObject(new MyClass()); // 写入对象
      
    • ObjectInputStream 用于读取对象。

  2. 字符对象流:

    • ObjectReaderObjectWriter

      ObjectWriter objectWriter = new ObjectWriter(new FileWriter("objects.txt"));
      objectWriter.writeObject(new MyClass()); // 写入对象
      
    • ObjectReader 用于读取对象。

这些是 Java I/O 流的基本分类,每个类别都有其特定的用途,具体的选择取决于你处理的数据类型以及对性能和便利性的需求。


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

相关文章:

  • 轻松上手:使用Docker部署Java服务
  • rockylinux 8安装 gcc11.2
  • python实战(八)——情感识别(多分类)
  • react的创建与书写
  • 【MySQL从入门到放弃】InnoDB磁盘结构(一)
  • 外星人入侵
  • 【算法思考记录】力扣1423. 可获得的最大点数[Python3, 滑动窗口]
  • golang 实现单向链表(lru)、双向链表、双向循环链表
  • Error:cannot launch node of type [map_server/map_server]
  • A++ 敏捷开发-1 如何改善
  • 常微分方程组的数值解法(C++)
  • WPS开发文档
  • Android:BackStackRecord
  • KALI LINUX安全审核
  • 实时设计#N3期训练营DONE,ComfyUI中文社区@上海
  • 再谈项目管理中的效率问题
  • “此应用专为旧版android打造,因此可能无法运行”,问题解决方案
  • 并发编程1:线程的基本概念
  • C# 使用HtmlAgilityPack解析提取HTML内容
  • 爬虫伦理与法律:确保数据采集合法性与伦理性
  • Unity工具脚本-检测资源文件夹是否有预制件是指定层级
  • 深入了解Java8新特性-日期时间API之ZonedDateTime类
  • 【Arduino库之:FastLED库】
  • SCAU:数字字符序列2
  • Linux(13):例行性工作排程
  • 前后端分离部署https