IO流及常见操作代码示例、字节流和字符流区别

        IO流(输入输出流)是用于处理输入和输出操作的一种机制。它提供了读取和写入数据的方式,可以从文件、网络连接、内存等不同来源读取数据,并将数据写入文件、网络连接、内存等不同目标。

Java的IO流主要分为两种类型:字节流(Byte Stream)和字符流(Character Stream)

字节流和字符流区别

        数据类型:

                字节流以字节(byte)为单位进行读写操作。

                字符流以字符(char)为单位进行读写操作。

        底层处理:

                字节流直接操作二进制数据,可以处理所有类型的数据。

                字符流在底层会使用字节流,但提供了字符集编解码的功能,能够更方便地处理字符数据。

        适用内容:

                字节流适用于处理二进制数据,例如图像、音频、视频等。

                字符流适用于处理文本数据,例如文本文件、配置文件等。

        处理效率:

                字节流在处理数据时较为直接,处理效率较高。

                字符流在处理数据时会进行字符集编解码操作,可能会略微降低处理效率。

        使用场景:

                字节流适合处理二进制数据和字节流式的操作,如文件复制、网络传输等。

                字符流适合处理文本数据和字符流式的操作,如读取文本文件、写入字符数据等。

        在选择字节流还是字符流时,应根据处理的数据类型和需求进行选择。如果处理的是二进制数据,或者需要进行底层的字节操作,可以选择字节流。如果处理的是文本数据,或者需要进行字符集编解码操作,可以选择字符流。

IO常见操作代码示例

使用字节流读取文件内容并输出到控制台:

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

public class ByteStreamExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("input.txt")) {
            int data;
            while ((data = fis.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用字符流读取文件内容并输出到控制台

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

public class CharacterStreamExample {
    public static void main(String[] args) {
        try (FileReader reader = new FileReader("input.txt")) {
            int data;
            while ((data = reader.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用字符流写入数据到文件

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

public class CharacterStreamWriteExample {
    public static void main(String[] args) {
        try (FileWriter writer = new FileWriter("output.txt")) {
            String data = "Hello, World!";
            writer.write(data);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值