JAVA字节流和字符流的区别

    技术2022-07-15  76

    之前在复习IO的时候,为了方便记忆,提到了以Stream结尾的为字节流,以Writer或者Reader结尾的为字符流

    除了在使用上的不一样,那究竟两者有什么区别呢。直接给出结论:字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件

    测试方法:使用OutputStream和Writer分别对文本文件做写入,但是并不关闭、不刷新(flush)输出流,执行后看是否能成功写入。

    OutputStream

    package com.leolee.eurekaclient.test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class Tests { public static void main(String[] args) throws IOException { final String text = "Hello"; File file = new File("C:" + File.separator + "Users" + File.separator + "LeoLee" + File.separator + "Desktop" + File.separator + "test.txt"); OutputStream outputStream = null; outputStream = new FileOutputStream(file); //将文本写入文件,但是并不关闭OutputStream outputStream.write(text.getBytes()); } }

    执行结果如下:

    Writer

    package com.leolee.eurekaclient.test; import java.io.*; public class Tests { public static void main(String[] args) throws IOException { final String text = "Hello"; File file = new File("C:" + File.separator + "Users" + File.separator + "LeoLee" + File.separator + "Desktop" + File.separator + "test.txt"); //将文本写入文件,但是并不关闭OutputStream Writer out = null; out = new FileWriter(file); out.write(text); } }

    执行结果如下:

    结果表明,字节流是直接操作了文件,字符流是操作了缓冲区。

    在开发过程中,字节流往往比字符流使用更广泛,原因也很简单,计算机本身数据的传输即使以字节为单位的,图片、视频等非文本文件也只能用字节流做处理。字符流只是方便了文本数据的读写,通过字符集的转化来实现的。

    Processed: 0.009, SQL: 9