IO流的理解

I/O 流(Input/Output Stream)是编程语言中用于处理数据输入与输出的机制,核心是实现程序与外部设备(文件、网络、控制台等)的数据传输。

 

一、核心分类

 

1. 按流向分

- 输入流:从外部设备读取数据到程序中,比如读取本地文件内容。

- 输出流:将程序中的数据写入外部设备,比如向文件写入文本。

2. 按数据单位分

- 字节流:以字节(byte)为单位传输数据,适用于所有类型文件(图片、视频、二进制文件等),Java 中典型类为  InputStream / OutputStream 。

- 字符流:以字符(char)为单位传输数据,专门处理文本文件,避免字节流处理中文时的乱码问题,Java 中典型类为  Reader / Writer 。

 

二、常见应用场景

 

- 本地文件的读写操作(如 txt、jpg 文件)

- 控制台的输入输出(如 Python 中  input()  读取控制台输入)

- 网络通信中的数据传输(如 Socket 编程中的流)

Java 编程中,I/O(Input/Output)是处理输入和输出的核心机制,提供了一种灵活而高效的方式,用于与文件、网络连接和其他设备进行数据交互[^3]。 JavaIO 可分为多种类型。按数据类型可分为字节和字符。字节主要包括`FileInputStream`和`FileOutputStream`,用于处理二进制数据;字符则有`FileReader`和`FileWriter`,适合处理文本数据。Java 内用 Unicode 编码存储字符,字符处理类负责将外部的其他编码的字符Java 内 Unicode 字符之间的转换,而类`InputStreamReader`和`OutputStreamWriter`处理字符和字节的转换,且字符一次可以处理一个缓冲区,一次操作比字节(一次一个字节)效率高[^4]。 从功能上,IO 还有缓冲(包括字节缓冲和字符缓冲)、转换(`InputStreamReader`和`OutputStreamWriter`)、序列化(`ObjectOutputStream`和`ObjectInputStream`)、打印(`PrintStream`)以及`Properties`属性类等。缓冲能够提高读写效率;序列化用于对象的序列化和反序列化;打印可方便地进行输出操作;`Properties`属性类则常用于处理属性文件[^1]。 在文件操作方面,`File`类是很重要的一个类,例如它的`listFiles`方法可获取当前目录下所有的子文件,返回的是一个`File[]`数组,以下是示例代码: ```java package com.bjpowernode.java.io; import java.io.File; public class FileTest03 { public static void main(String[] args) { File f = new File("C:\\Java学习\\javaSE学习\\2.1JavaSE进阶笔记\\javase\\chapter15\\src"); // 调用listFiles()方法,返回的是一个File[]数组 File[] files = f.listFiles(); // 用增强for循环打印 for(File file : files){ System.out.println(file.getAbsolutePath()); // 获取所有子目录的绝对路径 System.out.println(file.getName()); //获取所有子目录的文件名 } } } ``` 深入学习 Java IO 还会涉及到基本概念、不同类型的、文件读写操作、异常处理、性能优化以及 NIO(New I/O)等方面的内容,通过学习和实践这些内容,能够更好地理解和应用 Java IO ,为编程工作提供更多的灵活性和功能性[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值