黑马程序员技术交流社区

标题: 字节流与字符流的区别 [打印本页]

作者: ozt6719393    时间: 2013-5-23 15:39
标题: 字节流与字符流的区别
字节流与字符流的区别?什么时候用字节流,什么时候用字符流?

作者: yanzhigang    时间: 2013-5-23 15:50
实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。
下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流。
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.}   

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


希望对楼主有所帮助。我们一起努力。
作者: 无妄无涯    时间: 2013-5-23 15:50
哥们,我咋记得你前些天还帮人解答过这个问题,现在自己问?
作者: 翟宝海    时间: 2013-5-23 16:04
字节流就是按照字节来进行传输,字符流是按照字符来传输;
最基本的是字节流,字符流可以说是对字节流的一个包装流;
什么时候使用字节流和字符流主要根据你要处理的对象来判断!
一般情况下,图片、视频、音频等都用字节流处理;文本文件、字符串用字符流处理。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2