Java基础教程——缓冲流

缓冲流

“缓冲流”也叫“包装流”,是对基本输入输出流的增强:

字节缓冲流: BufferedInputStream , BufferedOutputStream
字符缓冲流: BufferedReader , BufferedWriter

缓冲流的基本原理:
创建流对象时,会创建一个缓冲区数组,通过缓冲区读写,减少系统IO次数,以提高读写效率。
就像送快递,快递小哥一次带一件当然慢,所以用车来运输,跑一趟可以带很多件。



以字符流为例:
|-读文件:FileReader + BufferedReader
|-写文件: FileWriter + BufferedWriter

package ahjava.p05io;
import java.io.*;
public class 字符流 {
    public static void main(String[] args) {
        字符流R();
        字符流W();
    }
    static void 字符流R() {
        File file = new File("testRead.dat");
        // 通过文件对象创建文件读取流对象
        FileReader fr;
        try {
            fr = new FileReader(file);
            // 将文件读取流包装成缓冲读取流
            BufferedReader br = new BufferedReader(fr);
            String str;
            while ((str = br.readLine()) != null) // 逐行读取数据
            {
                System.out.println(str);
            }
            br.close(); // 关闭流
            fr.close(); // 关闭流
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    static void 字符流W() {
        File file = new File("testFileWriter.txt");
        // 通过文件对象创建文件输出字符流对象
        FileWriter fw;
        try {
            fw = new FileWriter(file);
            // 将文件输出字符流包装成缓冲流
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write("萨瓦迪卡");
            bw.newLine(); // 换个新行
            bw.write("どうぞ よろしく お愿いします");
            bw.close(); // 关闭流
            fw.close(); // 关闭流
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

字节流也有包装流,试用包装流改写文件复制的代码,并测试程序效率提升的情况。

java.io.BufferedOutputStream
java.io.BufferedInputStream

原文地址:https://www.cnblogs.com/tigerlion/p/11179227.html

时间: 2024-10-12 02:06:48

Java基础教程——缓冲流的相关文章

Java基础教程——转换流

转换流 通常,Window默认的编码方式是GBK,Java项目一般建议设为UTF-8编码.这时候读取文件可能出现乱码.事实上实际应用中编码格式不匹配的场景非常多. 转换流可以指定编码方式,用于解决乱码问题. OutputStreamWriter InputStreamReader 字符编码:Character Encoding:自然语言的字符,与二进制数之间的对应规则. 文件流读取时使用的编码方式和文件本身编码方式不同时,会造成读取出来时出现乱码. 字符集 :Charset:系统支持的所有字符的

Java基础教程——字符流

字符流 字节流服务文本文件时,可能出现中文乱码.因为一个中文字符可能占用多个字节. 针对于非英语系的国家和地区,提供了一套方便读写方式--字符流. java.io.Reader java.io.Writer 文件字符流 |-读文件:FileReader java.io.FileReader fr = new FileReader("待读取的文件");// 构造时使用默认的字符编码 int 读取单个字符 = fr.read(); char[] cbuf = new char[1024];

Java基础教程——打印流

打印流 打印流可以把原本输出到控制台的信息输出到文件中.PrintStream是字节打印流(还有个对应的字符打印流是PrintWriter,这里不涉及) System类中有个变量: public final static PrintStream out = null; 赋值处: static { registerNatives(); } 打印流: public class PrintStream extends FilterOutputStream{...} public class Filte

Java基础教程(25)--I/O流

??I/O流表示输入源或输出目标.流可以表示许多不同类型的源和目标,例如磁盘文件.设备.其他程序等. ??流支持许多不同类型的数据,包括字节.原始数据类型.字符和对象等.有些流只传递数据; 有些流则可以操纵和转换数据. ??无论各种流的内部是如何工作的,所有流都提供相同的简单模型:流是一系列数据.程序使用输入流从源头获取数据,一次一项: ??程序使用输出流将数据写入目的地,一次一项: ??在本文中,我们会看到流可以处理各种各样的数据,无论是基本数据还是复杂对象.先来几张IO流的全家福: ??In

java基础学习总结——流

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——流 一.JAVA流式输入/输出原理 流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们想读文件里面的数据怎么办呢?是通过一个流的方式来读,咱们要想从程序读数据,对于计算机来说,无论读什么类型的数据都是以010101101010这样的形式读取的.怎么把文件里面的数据读出来呢?你可以把文件想象成一

Java基础教程:JDBC编程

Java基础教程:JDBC编程 快速开始 什么是JDBC JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC API 库包含下面提到的每个任务,都是与数据库相关的常用用法. 制作到数据库的连接. 创建 SQL 或 MySQL 语句. 执行 SQL 或 MySQL 查询数据库. 查看和修改所产生的记录. 从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,因此可以用 J

Java基础教程 - 组合

1. 什么是组合? 如果一个类的对象和另一个类满足"has-a"关系的话,我们就可以在一个类中,把另一个类的对象作为其对象成员. 什么是"has-a"关系,举个例子:现在有一个类LapTop.class,还有一个是Moniter.class.好显然,Laptop "has-a" Moniter,也就是说,他们是满足"has-a"关系的.这时候,我们就可以把Moniter作为Laptop的一个数据成员. class Laptop

java基础篇IO流的规律

前两篇降了IO流中的字节流和字符流复制的例子,今天来总结一下IO流的规律 掌握好IO流的规律,再开发中会很好用 下面来总结一下: 1,明确源和目的 源:输入流 InputStream 和Reader 目的:输出流 OutputStream 和Writer 2,操作的数据是否是纯文本. 是:使用字符流 不是:使用字节流 3,当体系明确后,在明确要使用哪个具体的对象,通过设备来进行区分 源设备: 内存,硬盘,键盘 目的设备: 内存,硬盘,控制台 这里的源就是你想进行的操作,比如说你想从c盘复制一个文

java中的缓冲流

一开始,并不明白java中的缓冲流到底有什么作用.OutputStream和BufferedOutputStream有什么区别,两者的write()方法都是一个字节一个字节的写,不同之处就是BufferedOutputStream会将字节先写到一个缓冲区中,然后通过flush()或者关闭这个缓冲流来实现将缓冲流中的数据回显. 之后,通过查阅关于缓冲流的相关知识,了解了一点点,一个字节一个字节的写入到硬盘会耗费时间,而先把数据写入缓冲区的话,再一次性的写入到硬盘或者其他地方,会节省很多时间.从而提