java中的IO流是什么

引用百度回答中一位前辈的话,我个人觉得清晰明了

 

我给你打个比方你就明白了;比如你家的水龙头的管道就是一个流:流又分为输入输出流,输入流就是你家水龙头抽水库水的那头(FileInputStream:将水抽到管道里面),输出流就是你家水龙头流到你家大水缸的那头(FileOutputStream:将水流到缸里)。现在有个A.txt文件,你要读取里面的信息,就相当于水龙头抽水库水到管道(FileInputStream),然后读取完后写入到另一个文件里面(FileOutputStream),就是相当于水龙头将抽到水后流到大水缸。很简单吧,就是一进一出的事,没这么复杂。别太官方了

### Java IO的概念及使用方法 JavaIO通过`java.io`包下的类和接口来支持,主要用于数据的读取和写入操作。IO可以分为输入(InputStream)和输出(OutputStream),并且根据处理的数据单位不同,又可分为字节和字符[^1]。 #### 1. IO的分类 - **字节**:以字节为单位进行数据处理,适用于所有类型的文件,包括二进制文件。主要类有`FileInputStream`和`FileOutputStream`。 - **字符**:以字符为单位进行数据处理,仅适用于纯文本文件。主要类有`FileReader`和`FileWriter`[^4]。 此外,JavaIO还采用了装饰者设计模式,将分为底层节点和上层处理。节点直接与物理存储节点关联,而处理则对节点进行包装,提供额外的功能,如缓冲、过滤等[^1]。 #### 2. 字符的使用示例 以下是一个使用字符读取文件内容的示例代码: ```java import java.io.BufferedReader; import java.io.FileReader; public class Demo2 { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new FileReader("E:\\Test.txt")); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上述代码中,`BufferedReader`被用来提高读取效率,并且通过`readLine()`方法逐行读取文件内容[^2]。 #### 3. 序列化的使用 序列化是Java IO的一个重要应用,用于将对象转换为字节以便于存储或传输。为了实现序列化,类必须实现`Serializable`接口。以下是一个对象序列化的示例代码: ```java import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Student implements Serializable { private static final long serialVersionUID = 1L; String name; int age; public Student(String name, int age) { this.name = name; this.age = age; } } public class SerializationDemo { public static void main(String[] args) throws Exception { Student student = new Student("张三", 22); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student")); oos.writeObject(student); oos.flush(); oos.close(); } } ``` 在此示例中,`ObjectOutputStream`被用来将`Student`对象序列化并保存到文件中[^3]。 #### 4. 关闭的重要性 如果不关闭IO,可能会导致资源泄漏,影响程序性能甚至引发异常。因此,在完成数据读写后,务必调用`close()`方法释放相关资源[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值