一、缓冲区使用
字节流不会用到缓冲区(内存),是文件自己直接操做的,而字符流在操做时使用了缓冲区,经过缓冲区再操做文件,因此使用字符流的时候要加上flush()方法,不然内容不会被写出去,而是还在内存里面。以下所示:
- package org.lxh.demo12.chariodemo;
- import java.io.File;
- import java.io.FileWriter;
- import java.io.Writer;
- public class WriterDemo04 {
- public static void main(String[] args) throws Exception { // 异常抛出不处理
- // 第1步:使用File类找到一个文件
- File f = new File("d:" + File.separator + "test.txt");// 声明File
- 对象
- // 第2步:经过子类实例化父类对象
- Writer out = null;
- // 准备好一个输出的对象
- out = new FileWriter(f);
- // 经过对象多态性进行实例化
- // 第3步:进行写操做
- String str = "Hello World!!!";
- // 准备一个字符串
- out.write(str);
- // 将内容输出
- out.flush();
- // 强制性清空缓冲区中的内容
- // 第4步:关闭输出流
- // out.close();
- // 此时没有关闭
- }
- }
字节流则不用加上清空缓存操做:
- public static void main(String[] args) throws Exception { // 异常抛出, 不处理
- // 第1步:使用File类找到一个文件
- File f = new File("d:" + File.separator + "test.txt"); // 声明File 对象
- // 第2步:经过子类实例化父类对象
- OutputStream out = null;
- // 准备好一个输出的对象
- out = new FileOutputStream(f);
- // 经过对象多态性进行实例化
- // 第3步:进行写操做
- String str = "Hello World!!!";
- // 准备一个字符串
- byte b[] = str.getBytes();
- // 字符串转byte数组
- out.write(b);
- // 将内容输出
- // 第4步:关闭输出流
- // out.close();
- // 此时没有关闭
- }
- }
二、字节流使用更普遍
若是是音频文件、图片、歌曲,就用字节流好点,若是是关系到中文(文本)的,用字符流好点