Java IO流(二进制IO流、文本IO流)

Java IO流(Input/Output Stream)是Java中用于处理输入输出操作的一种机制

IO流可以从不同的数据源读取数据,或者将数据写入到不同的目标。根据处理的数据类型,IO流可以分为二进制IO流和文本IO流。

一、二进制IO流:

  二进制IO流主要用于处理非文本数据,如图片、音频、视频等。在Java中,二进制IO流的基类是`InputStream`和`OutputStream`。常用的二进制IO流有:

- `FileInputStream`:从文件中读取字节数据的输入流。


- `FileOutputStream`:向文件中写入字节数据的输出流。


- `BufferedInputStream`:带缓冲区的字节输入流。


- `BufferedOutputStream`:带缓冲区的字节输出流。


- `DataInputStream`:从输入流中读取基本数据类型的输入流。


- `DataOutputStream`:向输出流中写入基本数据类型的输出流。

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

public class BinaryIOExample {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("input.txt");
            FileOutputStream fos = new FileOutputStream("output.txt");

            int data;
            while ((data = fis.read()) != -1) {
                fos.write(data);
            }

            fis.close();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

二、文本IO流:

  文本IO流主要用于处理文本数据。在Java中,文本IO流的基类是`Reader`和`Writer`。常用的文本IO流有:

- `FileReader`:从文件中读取字符数据的输入流。


- `FileWriter`:向文件中写入字符数据的输出流。


- `BufferedReader`:带缓冲区的字符输入流。


- `BufferedWriter`:带缓冲区的字符输出流。


- `InputStreamReader`:将字节输入流转换为字符输入流。


- `OutputStreamWriter`:将字符输出流转换为字节输出流。

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

public class TextIOExample {
    public static void main(String[] args) {
        try {
            FileReader fr = new FileReader("input.txt");
            FileWriter fw = new FileWriter("output.txt");

            BufferedReader br = new BufferedReader(fr);
            String line;
            while ((line = br.readLine()) != null) {
                fw.write(line);
                fw.flush();
            }

            br.close();
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

三、IO流的优势:

1. 通用性:IO流提供了一种通用的方式来处理各种输入输出源,如文件、网络连接、内存等。通过使用IO流,可以方便地读取和写入不同类型的数据,而无需关心底层的数据存储和传输细节。

2. 抽象层次高:IO流将输入输出操作抽象为一系列的对象和方法,使得程序员可以专注于业务逻辑,而不需要关心底层的操作系统和硬件实现。这有助于提高代码的可读性和可维护性。

3. 可扩展性:Java IO库提供了许多不同类型的流,可以根据需要组合使用。例如,可以使用缓冲流提高读写性能,使用数据流处理基本数据类型,使用对象流处理对象等。这种设计使得IO流具有很强的可扩展性,可以满足各种复杂场景的需求。

4. 异常处理:IO流操作可能会抛出`IOException`异常,这是一种受检异常。通过使用try-catch语句处理这些异常,可以确保程序在遇到错误时能够正常运行,并提供相应的错误处理逻辑。

5. 资源管理:Java 7引入了try-with-resources语句,它可以自动关闭实现了`AutoCloseable`接口的资源。这使得在使用IO流时,可以更方便地管理资源,避免因忘记关闭资源而导致的资源泄露问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值