java知识点---输入输出

Java 中的输入输出(I/O)是程序与外部世界(如用户、文件、网络、设备等)进行数据交换的基础功能。Java 提供了丰富的 I/O API 来支持各种类型的输入输出操作。以下是对 Java 中输入输出的主要概念、API 及使用场景的概述:

**1. 基本概念

  • 输入:指从外部获取数据的过程,如从键盘、文件、网络套接字等读取数据。
  • 输出:指向外部发送数据的过程,如向屏幕、文件、网络套接字等写入数据。

**2. 主要 API

标准输入输出

  • System.in:标准输入流,通常与键盘关联,可通过 InputStreamReaderBufferedReader 等进行字符读取。
  • System.outSystem.err:标准输出流和标准错误流,均与屏幕关联,通常使用 PrintStream 进行文本输出。

文件 I/O

  • java.io.File:表示文件或目录的路径,用于文件操作的辅助类。
  • java.io.FileInputStreamjava.io.FileOutputStream:用于读写二进制文件。
  • java.io.FileReaderjava.io.FileWriter:用于读写文本文件。
  • java.nio.file(Java 7 引入):提供更为现代、高效的文件 I/O API,如 Files 类和 Path 接口。

字符流与字节流

  • java.io.Readerjava.io.Writer:抽象类,分别代表字符输入流和字符输出流,如 BufferedReaderPrintWriter 等。
  • java.io.InputStreamjava.io.OutputStream:抽象类,分别代表字节输入流和字节输出流,如 FileInputStreamFileOutputStream 等。

缓冲流

  • java.io.BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter:为输入输出流提供缓冲功能,提高读写效率。

对象序列化

  • java.io.ObjectInputStreamjava.io.ObjectOutputStream:用于将 Java 对象序列化(写入)和反序列化(读取)到流中,实现对象的持久化存储或网络传输。

网络 I/O

  • java.net.Socketjava.net.ServerSocket:用于实现基于 TCP 协议的网络通信。
  • java.net.DatagramSocketjava.net.DatagramPacket:用于实现基于 UDP 协议的网络通信。
  • java.nio.channels(Java NIO):提供非阻塞的网络 I/O 支持,如 SocketChannelServerSocketChannel 等。

**3. 使用场景

  • 标准输入输出:与用户交互,如从控制台读取用户输入,向控制台输出程序信息。
  • 文件 I/O:读写硬盘上的文件,如文本文件、图片、音频、视频等。
  • 字符流与字节流:处理文本数据或二进制数据,如读写 XML、JSON 文件,下载或上传文件等。
  • 缓冲流:提高读写效率,减少系统调用次数。
  • 对象序列化:将对象状态保存到磁盘或通过网络传输对象,如保存游戏进度、实现 RPC(Remote Procedure Call)等。
  • 网络 I/O:实现客户端与服务器之间的通信,如 Web 客户端与服务器、邮件客户端与服务器、即时通讯软件等。

**4. Java 7 NIO.2(New I/O 2)

Java 7 引入了 NIO.2(New I/O 2),提供了更高级、更强大的 I/O 功能,包括:

  • 异步 I/O:通过 AsynchronousSocketChannelAsynchronousServerSocketChannel 等实现非阻塞的异步网络通信。
  • 文件锁定:通过 FileChannel.lock() 等方法实现文件的共享或独占锁定。
  • 文件属性与元数据:通过 Files 类的静态方法获取文件的各种属性(如大小、最后修改时间、权限等)和元数据。
  • 路径与文件系统Path 接口和 FileSystem 类提供了与文件系统路径和特性相关的操作。

总之,Java 中的输入输出涵盖了与外部数据交换的各种场景,提供了丰富的 API 来满足不同需求。从标准输入输出到文件 I/O、网络通信,再到高级的 NIO.2 功能,Java I/O 系统为开发者构建健壮、高效的软件提供了坚实的基础。在实际编程中,应根据具体需求选择合适的 I/O 类型和方法。

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值