字节流

  • 1、字节流在操作的时候不会用到缓冲区(也就是内存)
  • 2、字节流可用于任何类型的对象,包括二进制对象
  • 3、字节流处理单元为1个字节,操作字节和字节数组。

字符流

  • 1、而字符流在操作的时候会用到缓冲区
  • 2、而字符流只能处理字符或者字符串
  • 3、字符流处理的单元为2个字节的Unicode字符,操作字符、字符数组或字符串,

在硬盘上的所有文件都是以字节形式存在的(图片,声音,视频),而字符值在内存中才会形成。
所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的。

下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流。

使用字节流不关闭执行

public static void main(String[] args) {File file = new File("d:" + File.separator + "test1.txt");try {OutputStream os = new FileOutputStream(file);String str = "hello world";byte b[] = str.getBytes();os.write(b);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}

查看文件内容:

此时没有关闭字节流操作,但是文件中也依然存在了输出的内容,证明字节流是直接操作文件本身的

使用字符流不关闭执行

public static void main(String[] args) {File file = new File("d:" + File.separator + "test2.txt");try {Writer out = new FileWriter(file);String str = "hello world";out.write(str);} catch (IOException e) {e.printStackTrace();}
}

查看文件内容:

没有内容,这是因为字符流操作时使用了缓冲区,而 在关闭字符流时会强制性地将缓冲区中的内容进行输出,但是如果程序没有关闭,则缓冲区中的内容是无法输出的,所以得出结论:字符流使用了缓冲区,而字节流没有使用缓冲区。。

使用字符流强制清空缓存区

public static void main(String[] args) {File file = new File("d:" + File.separator + "test2.txt");try {Writer out = new FileWriter(file);String str = "hello world";out.write(str);//强制清空缓存区内容out.flush();} catch (IOException e) {e.printStackTrace();}
}

此时文件中已被写入内容,更加说明了字符操作内容是保存在缓冲区的

Java中的字节流和字符流区别相关推荐

  1. Java中的字节流和字符流如何理解——精简

    目录 引言 字节流和字符流 字节流 字节输入流 字节输出流 字符流 字符输入流 字符输出流 引言 在完完全全的完成本学期的学习任务之后,终于可以有时间继续更新Java相关的文章了.那么今天我们要学习的 ...

  2. java中的字节流和字符流

    前言 字节流:分为字节输入流(InputStream)和字节输出流(OutputStream) 字符流:分为字符输入流(InputStreamReader)和字符输出流(OutputStreamWri ...

  3. [转载] 菜鸟举例理解字节流和字符流区别

    参考链接: Java中的字符流与字节流 Character Stream对比Byte Stream 菜鸟举例理解字节流和字符流区别 按照uft8编码方式存储文档 文档存储路径在D盘下 /** * 按照 ...

  4. 【Java基础】吃透Java IO:字节流、字符流、缓冲流

    文章目录 [Java基础-3]吃透Java IO:字节流.字符流.缓冲流 一.初识java IO 1.1 IO流分类 1.1.1 输入流与输出流 1.1.2 字节流与字符流 1.1.3 节点流和处理流 ...

  5. 菜鸟举例理解字节流和字符流区别

    菜鸟举例理解字节流和字符流区别 按照uft8编码方式存储文档 文档存储路径在D盘下 /** * 按照utf8格式存储文档 */ public static void storeDataByUTF8() ...

  6. java中过滤流_第十四讲 Java中的字节流和过滤流

    第十四讲Java中的字节流和过滤流 主要内容 InputStream和FileInputStream OutputStream和FileOutputStream 文件字节IO流应用举例 过滤流类和常用 ...

  7. Stoker的Java学习之字节流与字符流

    Java学习之字节流与字符流 一. 字节流 字节流是在java.io包中操作文件内容的一大类,字节流将文字图片音频等文件转换成字节,进行数据传输. 在字节流中输出数据主要是使用OutputStream ...

  8. Java学习之字节流和字符流的转化

    Java学习之字节流和字符流的转化 1.字节流转换成字符流 输入字节流转为字符流需要用到InputStreamReader的构造方法: InputStreamReader(InputStream in ...

  9. java byte char io流_吃透Java IO:字节流、字符流、缓冲流

    前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...

最新文章

  1. String spilt时转义特殊字符【转】
  2. 模板方法模式与策略模式的区别
  3. js 数组遍历符合条件跳出循环体_Javascript数组循环遍历之forEach详解
  4. lucene3.5学习笔记02--创建索引和建立搜索
  5. java web项目里ehcache.xml的参数说明
  6. tomcat学习笔记——lifecycle(容器)启动都干了什么
  7. Linux文件查找命令find,xargs详述
  8. 工程师软技能6:理财人生精神
  9. 系统上云服务器地址,可以自己安装系统的云服务器地址
  10. 6月8日云栖精选夜读:mac下eclipse配置tomcat无法启动问题
  11. codeforces 451C. Predict Outcome of the Game 解题报告
  12. 又见n/i下取整+分块
  13. 初窥Python(一)——使用pymongo连接MongoDB
  14. hdu1019--Least Common Multiple
  15. 单片机74LS164C语言例子,51单片机控制74LS164芯片输出64位的数组
  16. 论文笔记—RGB-D SLAM in Dynamic Environments Using Static Point Weighting
  17. ReferenceError: “alert” is not defined
  18. 【Android App】实现在线语音合成功能(使用云知声平台和WebSocket 超详细 附源码)
  19. STVP下载提示“Warning: Old ST-Link firmware version detected”
  20. Javaweb 后台文件验证整理

热门文章

  1. tina -飞机大战4.0
  2. Spring AOP 的实现
  3. RabbitMQ5. 主题模式(Topic)实现和原理步骤讲解,方式5
  4. 使用华为云服务器的一些避坑指南
  5. PQmagic8.0分区出现问题Error 2003的解决办法
  6. tkinter GUI版通信录管理系统
  7. SpringCloud : 服务的注册与发现(Eureka)
  8. linux与mysql的关系_linux系统mysql简介
  9. 如何计算sinc函数的定积分?
  10. 什么是快乐星球?让我带你研究研究!