输入输出流

目录

一、输入输出流

二、流分为字节流和字符流

2.1字节流:

2.2字符流:

2.3总结:

三、输出字节流和字符流常见类

3.1输出字节流:

3.2输出字符流:

四、输入字节流和字符流常见类

4.1输入字节流:

4.2输入字符流:

五、字节流与字符流的相互转换

5.1OutputStreamWriter就是把字符流转换为字节流的过程

5.1.1举例

5.1.2总结:

5.2InputStreamReader就是把字节流转换为字符流的过程

5.2.1举例

5.2.2总结


一、输入输出流

外设(外部设备)比如磁盘,网络等读取数据到运行内存中称为输入流(input)

从运行内存中读取数据写入到外设中,称为输出流(output)。

二、流分为字节流和字符流

2.1字节流:

概念:字节流以字节(8 位)为单位读取数据,适用于处理二进制数据,如图像、音频、视频等。

2.2字符流:

概念:符流以字符为单位读取数据,适用于处理文本数据。字符流在读取时会考虑字符编码,将字节转换为字符。

2.3总结:

字节流适用于处理二进制文件

字符流适用于处理文本文件

三、输出字节流和字符流常见类

3.1输出字节流:

  • 1.OutputStream 字节输出流的基类
  • 2.FileOutputStream 用于将字节数据写入文件
  • 3.ByteArrayOutputStream 用于将字节数据写入字节数组

3.2输出字符流:

  • 1.Writer 字符输出流的基类
  • 2.FileWriter 将字符写入文件
  • 3.BufferedWriter 提供缓冲功能的字符输出流,可以提高写入效率

四、输入字节流和字符流常见类

4.1输入字节流:

  • 1.InputStream 字节输入流的基类
  • 2.FileInputStream 从文件读取字节数据
  • 3.ByteArrayInputStream 从字节数组读取字节数据

4.2输入字符流:

  • 1.Reader 字符输入流的基类
  • 2.FileReader 从文件读取字符数据
  • 3.BufferedReader:提供缓冲功能的字符输入流,可以提高读取效率

五、字节流与字符流的相互转换

5.1OutputStreamWriter就是把字符流转换为字节流的过程

5.1.1举例

    public static void writeTest() {
        try (OutputStream outputStream = new FileOutputStream("example.txt");
             Writer writer = new OutputStreamWriter(outputStream, "UTF-8");
             BufferedWriter bufferedWriter = new BufferedWriter(writer)) {
            bufferedWriter.write("hello word!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

在这个例子中:

  • FileOutputStream 是字节流,用于将字节数据写入文件。
  • OutputStreamWriter 是将字符流转换为字节流的桥梁,通过指定的字符编码将字符编码为字节并写入。
  • BufferedWriter 是带有缓冲功能的字符流,用于更高效地写入文本数据。

5.1.2总结:

  • 字节输出流:用于写入字节数据,适合处理二进制文件。
  • 字符输出流:用于写入字符数据,适合处理文本文件。
  • 字节流与字符流的转换:通过 OutputStreamWriter 等类实现,将字符流编码为字节流。

5.2InputStreamReader就是把字节流转换为字符流的过程

5.2.1举例

    public static void readTest() {
        try (
                InputStream inputStream = new FileInputStream("example.txt");
                Reader reader = new InputStreamReader(inputStream, "UTF-8");
                BufferedReader bufferedReader = new BufferedReader(reader)
        ) {
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

在这个例子中:

  • FileInputStream 是字节流,直接从文件中读取字节。
  • InputStreamReader 是将字节流转换为字符流的桥梁,通过指定的字符编码将字节解码为字符。
  • BufferedReader 是带有缓冲功能的字符流,用于更高效地读取文本数据。

5.2.2总结

  • 字节输入流:用于读取字节数据,适合处理二进制文件。
  • 字符输入流:用于读取字符数据,适合处理文本文件。
  • 字节流与字符流的转换:通过 InputStreamReader 等类实现,将字节流转换为字符流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值