A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ozt6719393 中级黑马   /  2013-5-23 15:39  /  1616 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字节流与字符流的区别?什么时候用字节流,什么时候用字符流?

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

3 个回复

正序浏览
字节流就是按照字节来进行传输,字符流是按照字符来传输;
最基本的是字节流,字符流可以说是对字节流的一个包装流;
什么时候使用字节流和字符流主要根据你要处理的对象来判断!
一般情况下,图片、视频、音频等都用字节流处理;文本文件、字符串用字符流处理。
回复 使用道具 举报
哥们,我咋记得你前些天还帮人解答过这个问题,现在自己问?
回复 使用道具 举报
实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。
下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流。
01.package org.lxh.demo12.byteiodemo;   
02.import java.io.File;   
03.import java.io.FileOutputStream;   
04.import java.io.OutputStream;   
05.public class OutputStreamDemo05 {   
06.public static void main(String[] args) throws Exception {   // 异常抛出,  不处理   
07.// 第1步:使用File类找到一个文件   
08.     File f = new File("d:" + File.separator + "test.txt"); // 声明File  对象   
09.// 第2步:通过子类实例化父类对象   
10.     OutputStream out = null;            
11.// 准备好一个输出的对象   
12.     out = new FileOutputStream(f);      
13.// 通过对象多态性进行实例化   
14.// 第3步:进行写操作   
15.     String str = "Hello World!!!";      
16.// 准备一个字符串   
17.     byte b[] = str.getBytes();         
18.// 字符串转byte数组   
19.     out.write(b);                     
20.// 将内容输出   
21. // 第4步:关闭输出流   
22.    // out.close();                  
23.// 此时没有关闭   
24.        }   
25.    }   

此时没有关闭字节流操作,但是文件中也依然存在了输出的内容,证明字节流是直接操作文件本身的。而下面继续使用字符流完成,再观察效果。

01.package org.lxh.demo12.chariodemo;   
02.import java.io.File;   
03.import java.io.FileWriter;   
04.import java.io.Writer;   
05.public class WriterDemo03 {   
06.    public static void main(String[] args) throws Exception { // 异常抛出,  不处理   
07.        // 第1步:使用File类找到一个文件   
08.        File f = new File("d:" + File.separator + "test.txt");// 声明File 对象   
09.        // 第2步:通过子类实例化父类对象   
10.        Writer out = null;                 
11.// 准备好一个输出的对象   
12.        out = new FileWriter(f);            
13.// 通过对象多态性进行实例化   
14.        // 第3步:进行写操作   
15.        String str = "Hello World!!!";      
16.// 准备一个字符串   
17.        out.write(str);                    
18.// 将内容输出   
19.        // 第4步:关闭输出流   
20.        // out.close();                  
21.// 此时没有关闭   
22.    }   
23.}   

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


希望对楼主有所帮助。我们一起努力。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马