Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • MacOS
  • Linux
  • Windows
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • MacOS
  • Linux
  • Windows
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • Java基础

    • Java概述
    • Java语法
    • 面向对象编程
    • Java数组
    • String字符串
    • 异常处理
  • Java集合

    • Java集合概述
    • ArrayList
    • LinkedList
    • HashMap
    • LinkedHashMap
    • HashSet
    • TreeMap
    • Queue&Deque
  • Java并发

    • Java并发概述
    • 线程与进程
    • Thread类与线程生命周期
    • 线程安全
    • synchronized关键字
    • volatile关键字
    • Java内存模型(JMM)
    • 线程间通信
    • 线程池
    • 并发工具类
    • 原子操作类Atomic
    • 并发锁
    • 并发容器
    • ConcurrentHashMap
    • BlockingQueue
    • CopyOnWriteArrayList
    • ThreadLocal
    • Fork/Join框架
    • ScheduledThreadPoolExecutor
    • CompletableFuture
  • Java IO

    • Java IO概述
      • 1. 输入输出流
      • 2. 文件操作
      • 3. 缓冲流
      • 4. 数据流
      • 5. 对象流
      • 6. 打印流
      • 7. 管道流
      • 8. NIO(New IO)
      • 9. 文件系统和实用工具类
      • 10. IO 的常见应用场景
      • 11. 总结
  • JVM

    • JVM概述
目录

Java IO概述

Java IO(输入/输出)是 Java 平台中用于数据流处理的重要部分,提供了对文件、网络、内存等多种数据源和目标的操作。Java IO 包含了多种类和接口,能够实现同步和异步的输入输出操作。Java IO API 主要分为两大部分:面向字节流的 IO 和面向字符流的 IO。

# 1. 输入输出流

  • 字节流(InputStream 和 OutputStream):用于处理 8 位字节的数据,适合于处理诸如图像、音频、视频等二进制文件。
    • InputStream:读取数据的基类,包括 FileInputStream、BufferedInputStream、DataInputStream 等常见子类。
    • OutputStream:写入数据的基类,包括 FileOutputStream、BufferedOutputStream、DataOutputStream 等常见子类。
  • 字符流(Reader 和 Writer):用于处理 16 位字符的数据,适合于处理文本文件。
    • Reader:读取字符数据的基类,包括 FileReader、BufferedReader、InputStreamReader 等常见子类。
    • Writer:写入字符数据的基类,包括 FileWriter、BufferedWriter、OutputStreamWriter 等常见子类。

# 2. 文件操作

  • File 类:java.io.File 类是 Java IO 中用于表示文件和目录路径的类,提供了对文件和目录的基本操作,如创建、删除、重命名、获取文件信息等。
  • RandomAccessFile:用于实现对文件的随机访问,可以从文件的任意位置进行读取和写入,适合于实现文件的分块读写。

# 3. 缓冲流

  • BufferedInputStream 和 BufferedOutputStream:字节流的缓冲处理类,通过减少对底层资源的访问次数,提高 IO 操作的效率。
  • BufferedReader 和 BufferedWriter:字符流的缓冲处理类,用于提高对字符数据的读取和写入效率,常用于逐行读取文本数据。

# 4. 数据流

  • DataInputStream 和 DataOutputStream:用于读取和写入 Java 的原始数据类型(如 int、float、double 等),通过提供对基本数据类型的读写支持,方便了对数据的处理。

# 5. 对象流

  • ObjectInputStream 和 ObjectOutputStream:用于对象的序列化和反序列化操作,可以将对象转换为字节流,以便存储到文件或通过网络传输。
    • Serializable 接口:对象序列化的前提是类必须实现 Serializable 接口,以便标记该类的对象是可序列化的。

# 6. 打印流

  • PrintStream 和 PrintWriter:提供了格式化输出的功能,可以方便地将各种数据类型输出到文件、控制台等。
    • PrintStream:主要用于字节流的打印输出,常见的 System.out 就是一个 PrintStream 实例。
    • PrintWriter:用于字符流的打印输出,支持自动刷新,常用于文本文件的输出。

# 7. 管道流

  • PipedInputStream 和 PipedOutputStream:用于实现线程之间的通信,PipedInputStream 和 PipedOutputStream 可以连接起来,实现数据在不同线程之间的传输。
  • PipedReader 和 PipedWriter:字符流版本的管道,用于线程间的字符数据传输。

# 8. NIO(New IO)

  • 概述:Java NIO(New Input/Output)是在 Java 1.4 引入的,与传统 IO 不同,它是基于缓冲区和通道的非阻塞 IO,能够实现更高效的数据处理。
  • Channel(通道):Channel 是 NIO 中的数据传输通道,用于连接数据源和数据目标。常见的通道类型包括 FileChannel、SocketChannel、ServerSocketChannel 等。
  • Buffer(缓冲区):Buffer 是用于存储数据的容器,与传统 IO 中的流不同,NIO 中的数据读取和写入都是通过缓冲区进行的。
  • Selector(选择器):Selector 允许一个线程管理多个通道,尤其适合于管理大量的网络连接场景,通过选择器可以实现非阻塞的多路复用。

# 9. 文件系统和实用工具类

  • Files 和 Paths 类:java.nio.file.Files 和 java.nio.file.Paths 类提供了对文件和目录的便捷操作方法,如复制、移动、删除、创建等。
  • FileVisitor 接口:用于遍历文件树,可以实现对文件系统的递归访问,常与 Files.walkFileTree() 方法结合使用。

# 10. IO 的常见应用场景

  • 文件读写:使用 FileInputStream、FileOutputStream、FileReader、FileWriter 等类实现文件的读写操作。
  • 网络数据传输:使用 Socket 和 ServerSocket 结合 IO 流实现网络中的数据读写。
  • 日志系统:使用 PrintWriter 或 BufferedWriter 编写日志到文件。
  • 对象持久化:使用 ObjectOutputStream 和 ObjectInputStream 对 Java 对象进行序列化和反序列化。

# 11. 总结

Java IO 提供了丰富的 API 来处理各种输入输出场景,从简单的文件读写到复杂的网络通信和对象序列化。通过结合使用字节流、字符流、缓冲流、对象流等工具,开发者可以高效地实现数据的传输和处理。理解 Java IO 的各个组成部分和应用场景,有助于在实际开发中编写更加高效、灵活的 IO 处理代码。

上次更新: 2024/11/01, 13:45:14
CompletableFuture
JVM概述

← CompletableFuture JVM概述→

Copyright © 2023-2024 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式