Java 中 IO 流分为几种?

Java 中 IO 流分为几种?

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

字节流(Byte Streams):

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

  1. 输入字节流:

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

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

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

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

字符流(Character Streams):

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

  1. 输入字符流:

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

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

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

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

缓冲流(Buffered Streams):

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

  1. 字节缓冲流:

    • BufferedInputStreamBufferedOutputStream

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

  2. 字符缓冲流:

    • BufferedReaderBufferedWriter

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

对象流(Object Streams):

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

  1. 字节对象流:

    • ObjectInputStreamObjectOutputStream

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

  2. 字符对象流:

    • ObjectReaderObjectWriter

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

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

相关推荐
Xiangchu_8 分钟前
安徽硅胶厂的转型困局:从家电到汽车,卡在哪
经验分享·python·阿里云·eclipse·汽车·制造
Edward1111111117 分钟前
一AI名词
java·开发语言·数据库·学习
CTA终结者18 分钟前
近期AI量化工具推荐,围绕最难推进的环节选择
人工智能·python
栈溢出了30 分钟前
Redis repl_backlog 学习笔记
java·开发语言·redis·学习
谙忆35 分钟前
Python 常用图像处理库速查:Pillow、OpenCV、rembg、pillow-simd 各擅长什么、怎么选
图像处理·python·pillow
urkay-38 分钟前
Kotlin Flow分类
android·开发语言·kotlin
敲代码的猴先生39 分钟前
论文分享 | TensorAbuse:通过滥用TensorFlow API将AI模型转化为恶意软件
人工智能·python·语言模型·tensorflow·论文笔记
言乐640 分钟前
Python视频相对亮度检测
数据库·python·计算机视觉·小程序·音视频
Csvn41 分钟前
Python 开发技巧 · logging 最佳实践 —— 告别 print,搭建工程级日志系统
后端·python
并不喜欢吃鱼44 分钟前
从零开始 C++----- 十五.一文吃透 C++ 异常:try-catch、栈展开、自定义异常、异常安全 noexcept 底层全剖析
java·开发语言·jvm