Java中的字节流和字符流区别
字节流
- 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中的字节流和字符流区别相关推荐
- Java中的字节流和字符流如何理解——精简
目录 引言 字节流和字符流 字节流 字节输入流 字节输出流 字符流 字符输入流 字符输出流 引言 在完完全全的完成本学期的学习任务之后,终于可以有时间继续更新Java相关的文章了.那么今天我们要学习的 ...
- java中的字节流和字符流
前言 字节流:分为字节输入流(InputStream)和字节输出流(OutputStream) 字符流:分为字符输入流(InputStreamReader)和字符输出流(OutputStreamWri ...
- [转载] 菜鸟举例理解字节流和字符流区别
参考链接: Java中的字符流与字节流 Character Stream对比Byte Stream 菜鸟举例理解字节流和字符流区别 按照uft8编码方式存储文档 文档存储路径在D盘下 /** * 按照 ...
- 【Java基础】吃透Java IO:字节流、字符流、缓冲流
文章目录 [Java基础-3]吃透Java IO:字节流.字符流.缓冲流 一.初识java IO 1.1 IO流分类 1.1.1 输入流与输出流 1.1.2 字节流与字符流 1.1.3 节点流和处理流 ...
- 菜鸟举例理解字节流和字符流区别
菜鸟举例理解字节流和字符流区别 按照uft8编码方式存储文档 文档存储路径在D盘下 /** * 按照utf8格式存储文档 */ public static void storeDataByUTF8() ...
- java中过滤流_第十四讲 Java中的字节流和过滤流
第十四讲Java中的字节流和过滤流 主要内容 InputStream和FileInputStream OutputStream和FileOutputStream 文件字节IO流应用举例 过滤流类和常用 ...
- Stoker的Java学习之字节流与字符流
Java学习之字节流与字符流 一. 字节流 字节流是在java.io包中操作文件内容的一大类,字节流将文字图片音频等文件转换成字节,进行数据传输. 在字节流中输出数据主要是使用OutputStream ...
- Java学习之字节流和字符流的转化
Java学习之字节流和字符流的转化 1.字节流转换成字符流 输入字节流转为字符流需要用到InputStreamReader的构造方法: InputStreamReader(InputStream in ...
- java byte char io流_吃透Java IO:字节流、字符流、缓冲流
前言有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身, ...
最新文章
- String spilt时转义特殊字符【转】
- 模板方法模式与策略模式的区别
- js 数组遍历符合条件跳出循环体_Javascript数组循环遍历之forEach详解
- lucene3.5学习笔记02--创建索引和建立搜索
- java web项目里ehcache.xml的参数说明
- tomcat学习笔记——lifecycle(容器)启动都干了什么
- Linux文件查找命令find,xargs详述
- 工程师软技能6:理财人生精神
- 系统上云服务器地址,可以自己安装系统的云服务器地址
- 6月8日云栖精选夜读:mac下eclipse配置tomcat无法启动问题
- codeforces 451C. Predict Outcome of the Game 解题报告
- 又见n/i下取整+分块
- 初窥Python(一)——使用pymongo连接MongoDB
- hdu1019--Least Common Multiple
- 单片机74LS164C语言例子,51单片机控制74LS164芯片输出64位的数组
- 论文笔记—RGB-D SLAM in Dynamic Environments Using Static Point Weighting
- ReferenceError: “alert” is not defined
- 【Android App】实现在线语音合成功能(使用云知声平台和WebSocket 超详细 附源码)
- STVP下载提示“Warning: Old ST-Link firmware version detected”
- Javaweb 后台文件验证整理