Java IO流简单介绍(新手入门)

一、IO流的概念

Java IO流是Java提供的一种数据输入输出的抽象机制,它以数据流的形式在程序与外部世界之间传输数据。IO流可以是文件、网络连接、键盘输入、屏幕输出等多种形式。

二、IO流的分类

 2.1 按数据单位分类

字节流:基于字节(8位二进制数),适用于二进制数据传输,如图片、视频等。
字符流:基于字符,适用于文本数据传输,自动处理字符编码的转换。

2.2 按流向分类

输入流:数据从源头(如文件、网络等)流入程序。
输出流:数据从程序流出到目的地。

2.3 按功能分类

节点流:直接连接到数据源的流,如`FileInputStream`、`FileOutputStream`。
处理流:在节点流的基础上增加额外功能的流,如`BufferedReader`、`BufferedWriter`。

三、核心IO流类

3.1 字节流

InputStream:所有输入字节流的超类。
OutputStream:所有输出字节流的超类。

3.2 字符流

Reader:所有输入字符流的超类。
Writer:所有输出字符流的超类。

3.3 特殊流

DataInputStream:从字节流中读取基本数据类型。
DataOutputStream:将基本数据类型写入字节流。

四、IO流的使用

 4.1 使用字节流读取文件

import java.io.FileInputStream;
import java.io.IOException;

public class ByteStreamExample {
    public static void main(String[] args) {
        FileInputStream fis = null;
        try {
            fis = new FileInputStream("sample.bin");
            int byteRead = 0;
            while ((byteRead = fis.read()) != -1) {
                // 处理读取到的字节
                System.out.println("Read byte: " + byteRead);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

4.2 使用字符流写入文件

import java.io.FileWriter;
import java.io.IOException;

public class CharStreamExample {
    public static void main(String[] args) {
        FileWriter writer = null;
        try {
            writer = new FileWriter("sample.txt", true); // 追加模式
            writer.write("Hello, Java IO Streams!\n");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

4.3 使用缓冲流提高效率

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedStreamExample {
    public static void main(String[] args) {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader("sample.txt"));
            String line = null;
            while ((line = reader.readLine()) != null) {
                // 处理读取到的行
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 五、注意事项和最佳实践

关闭流:始终在操作完成后关闭流,以释放系统资源。可以使用try-finally块或try-with-resources语句。
异常处理:IO操作可能会抛出IOException,应当妥善处理。
使用缓冲流:对于大量数据的读写,使用缓冲流可以显著提高性能。
字符编码:在处理字符流时,注意字符编码的设置,避免乱码问题。

 六、结论

Java IO流是程序与外部世界进行数据交换的桥梁。通过本篇文章,我们学习了IO流的基本概念、分类和使用方式,并通过代码示例了解了如何在实际编程中应用IO流。掌握IO流的使用对于Java开发者来说是一项基础且重要的技能。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值