《Java开发十日速成:零基础保姆级教程(附20000字实战+流程图)》 Day6:IO流与文件操作

《Java开发十日速成:零基础保姆级教程(附20000字实战+流程图)》

副标题:挑战高薪!十天掌握Java核心技能,小白也能写出企业级代码


Day6:IO流与文件操作

学习目标

  • 掌握Java IO流的核心概念及使用场景
  • 理解字节流与字符流的区别及其底层实现
  • 学习序列化与反序列化的基本用法
  • 完成实战项目:Excel文件读写(基于Apache POI库)

6.1 Java IO流概述

IO流分类

Java IO流分为两大类[[4]]:

  1. 字节流(Byte Stream):以字节为单位处理数据
    • 输入流:InputStream
    • 输出流:OutputStream
  2. 字符流(Character Stream):以字符为单位处理数据(适合文本文件)
    • 输入流:Reader
    • 输出流:Writer

字节流 vs 字符流
特性 字节流 字符流
数据单位 字节(8位) 字符(16位)
适用场景 图片、视频等二进制文件 文本文件
缓冲性能 需手动优化 自带缓冲机制

代码示例

import java.io.*;  

public class FileStreamDemo {
     
    public static void main(String[] args) throws IOException {
     
        // 字节流写入文件  
        try (OutputStream out = new FileOutputStream("output.txt")) {
     
            out.write("Hello, Byte Stream!".getBytes());  
        }  

        // 字符流读取文件  
        try (Reader reader = new FileReader("output.txt")) {
     
            char[] buffer = new char[1024];  
            int len = reader.read(buffer);  
            System.out.println(new String(buffer, 0, len));  
        }  
    }  
}  

6.2 缓冲流的使用

缓冲流的优势
  • 提高IO效率,减少磁盘访问次数
  • 常见实现:BufferedInputStreamBufferedReader

代码示例

import java.io.*;  

public class BufferedStreamDemo {
     
    public static void main(String[] args) throws IOException {
     
        // 使用缓冲流写入文件  
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("buffered.txt"))) {
     
            writer.write("Hello, Buffered Stream!");  
        }  

        // 使用缓冲流读取文件  
        try (BufferedReader reader = new BufferedReader(new FileReader("buffered.txt"))) {
     
            String line;  
            while ((line = reader.readLine()) != null) {
     
                System.out.println(line);  
            }  
        }  
    }  
}  

6.3 序列化与反序列化

序列化的定义
  • 将对象的状态保存到文件中,便于持久化存储或网络传输[[5]]
  • 实现Serializable接口即可支持序列化

代码示例

import java.io.*;  

class Person implements Serializable {
     
    private static final long serialVersionUID = 1L;  
    private String name;  
    private int age;  

    public Person(String name, int age) {
     
        this.name = name;  
        this.age = age;  
    }  

    @Override  
    public String toString() {
     
        return "姓名:" + name + ", 年龄:" + age;  
    }  
}  

public class SerializationDemo {
     
    public static void main(String[] args) throws IOException, ClassNotFoundException {
     
        // 序列化对象到文件  
        try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.dat"))) {
     
            Person person = new Person("Alice"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

emmm形成中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值