为什么要使用缓存流?

当对磁盘访问次数多的时候,字节流和字符流就会感觉性能不佳,速度较慢。

缓存流,一次会读取很多的数据到缓存中,以后每一次读取都是从缓存中读取,直到缓存中数据读取完,这样就减少了io操作,提升了速度。就像拿碗吃饭一样,碗就相当于是缓存,不用吃每一口饭就向锅里盛。

分类

缓冲流分为字节和字符缓冲流

字节缓冲流为:
BufferedInputStream—字节输入缓冲流
BufferedOutputStream—字节输出缓冲流
字符缓冲流为:
BufferedReader—字符输入缓冲流
BufferedWriter—字符输出缓冲流

使用BufferedReader字符输入缓冲流和PrintWriter读取和写入文件

注意:缓存流必需要建立在一个已存在流的基础上

readline()读取一行,遇到回车(\r)或者换行符(\n)才会返回读取结果,这就是“读取一行的意思”

  1. public static void main(String[] args) {
  2. File file = new File("D:\\lolfilder\\lol.exe\\bufferdemo.txt");
  3. File file1 = new File("D:\\lolfilder\\lol.exe\\bufferdemo1.txt");
  4. try(//创建字符输入流
  5. //创建缓存流,缓存流必需建立在一个字符流基础上
  6. FileReader fr=new FileReader(file);
  7. BufferedReader br = new BufferedReader(fr);
  8. //输出流与缓存流
  9. FileWriter fw = new FileWriter(file1);
  10. PrintWriter pw = new PrintWriter(fw);
  11.  
  12. )
  13. {
  14. //readline()读取一行,遇到回车(\r)或者换行符(\n)才会返回读取结果,这就是“读取一行的意思”
  15. String line = br.readLine();
  16. System.out.println(line);
  17. //写入
  18. pw.println("这是缓存流写入的结果第一行");
  19. pw.flush();
  20. pw.println("这是缓存流写入的结果第二行");
  21.  
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25.  
  26. }

I/O————缓存流的更多相关文章

  1. C#缓存流的使用浅析

    C#缓存流的使用实例:用缓存流复制文件,C#文件处理操作必须先导入命名空间: using System.IO; ///在按钮的Click事件中添加如下代码: private void button1_ ...

  2. 一、I/O操作(缓存流,数据流,对象流)

    一.缓存流 以介质是硬盘为例子说明,字节流和字符流的缺点: 每次读写的时候,都会访问硬盘,如果读写频率比较高的时候,性能不佳.为了解决问题,采用缓存流. 缓存流在读取的时候,会一次性读较多的数据到缓存 ...

  3. (转)关于fflush(stdin)清空输入缓存流(C/C++)

    来源:http://my.oschina.net/deanzhao/blog/79790 1. 为什么 fflush(stdin) 是错的?首先请看以下程序: #include <stdio.h ...

  4. Java自学-I/O 缓存流

    Java 缓存流BufferedReader,PrintWriter 以介质是硬盘为例,字节流和字符流的弊端: 在每一次读写的时候,都会访问硬盘. 如果读写的频率比较高的时候,其性能表现不佳. 为了解 ...

  5. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  6. 在c#中IO流读写操作

    1.使用FileStream读写文件 文件头: using System;using System.Collections.Generic;using System.Text;using System ...

  7. 关于对inputstream流的复制

    今天因为项目需要,获取到一个inputstream后,可能要多次利用它进行read的操作.由于流读过一次就不能再读了,所以得想点办法. 而InputStream对象本身不能复制,因为它没有实现Clon ...

  8. 带缓存的输入输出-bufferedinputstream类与bufferedoutputstream类

    package hengzhe.cn.o1; import java.io.*; /* * 带缓存的输入输出-bufferedinputstream类与bufferedoutputstream类 * ...

  9. WP_从独立存储区读取缓存的图片

      ///<summary> /// 独立存储缓存的图片源 /// 用法:item.img = new StorageCachedImage(newUri(http://www.baidu ...

随机推荐

  1. python之yield和Generator

    首先我们从一个小程序导入,各定一个list,找出其中的素数,我们会这样写 import math def is_Prims(number): if number == 2: return True / ...

  2. 机器学习 : 高斯混合模型及EM算法

    Mixtures of Gaussian 这一讲,我们讨论利用EM (Expectation-Maximization)做概率密度的估计.假设我们有一组训练样本x(1),x(2),...x(m),因为 ...

  3. Java对象的初始化

    昨天写的代码被殷老师诟病了,因为太「丑陋」. 原来我的代码结构是这样的: public class ColorRocognizer { ..... public static void main(St ...

  4. OC-内存管理的所有权链问题

    背景: 最近维护之前的项目,没有注意具体的对象之间的关系,导致了一个bug. 让我了解到对象的所有权链问题. 需要内存管理的知识: 众所周知,oc是使用引用计数来管理内存的(当一个对象被持有,他的re ...

  5. 【整理】XOR:从陌生到头晕

    一:解决XOR常用的方法: 在vjudge上面输入关键词xor,然后按照顺序刷了一些题. 然后大概悟出了一些的的套路: 常用的有贪心,主要是利用二进制的一些性质,即贪心最大值的尽量高位取1. 然后有前 ...

  6. uart驱动框架分析(二)uart_add_one_port

    作者:lizuobin (百问网论坛答疑助手) 原文: https://blog.csdn.net/lizuobin2/article/details/51801183 (所用开发板:mini2440 ...

  7. bzoj4804

    莫比乌斯反演 我不会推线性筛 留坑

  8. UltraISO中文版+注册码

    UltraISO v9.5.3.2901 百度网盘下载地址: http://pan.baidu.com/s/1l9t2U 新浪微盘下载地址: http://vdisk.weibo.com/s/rcvB ...

  9. 3.19 YARN HA架构及(RM/NM) Restart讲解

    一.ResourceManager HA ResourceManager(RM)负责跟踪集群中的资源,以及调度应用程序(例如,MapReduce作业). 在Hadoop 2.4之前,ResourceM ...

  10. Flutter实战视频-移动电商-62.购物车_首页Provide化 让跳转随心所欲

    62.购物车_首页Provide化 让跳转随心所欲 新建provide/currentIndex.dart 内容比较简单,定义一个变量当前页面的索引currentIndex,再定义一个方法改变它的值 ...