BufferedReader和BufferedWriter

字符流的缓冲区:缓冲区的而出现提高了对数据的读写效率
对应类:BufferedWriter  BufferedReader
缓冲区要结合流才可以使用,在流的基础上对流的功能进行了增强。实际上BufferedReader和BufferedWriter是对FileReader和FileWriter的装饰模式
BufferedWriter:

bufw.newLine();

public class BufferedWriterDemo {

    private static final String LINE_SEPARATOR =System.getProperty("line.separator");

    public static void main(String[] args) throws IOException {

        FileWriter fw= new FileWriter("buf.txt");
//为了提高效率。使用字符流的缓冲区
//创建了一个字符写入流的缓冲区对象,并和指定缓冲流对象相关联
BufferedWriter bufw=new BufferedWriter(fw);
//使用缓冲区的写入方法将数据先写入缓冲区中
//bufw.write("afdafdsdgg"+LINE_SEPARATOR+"fggag");
bufw.write("xifasf2");
bufw.newLine();
bufw.write("xifasf");
for (int x = 0; x <4; x++) {
bufw.write("xifasf");
bufw.newLine();
}
//使用缓冲区的刷新方法将数据刷到目的地中
//bufw.flush();
//关闭缓冲区。其实关闭的就是缓冲的流对象
bufw.close();
}
}

BufferedReader:

line=buf.readLine()

public class BufferedReaderDemo {
public static void main(String[] args) throws IOException {
FileReader fr= new FileReader("buf.txt");
BufferedReader buf=new BufferedReader(fr);
String line=null;
while((line=buf.readLine())!=null){
System.out.println(line);
}
buf.close();
}

练习: 自定义的读取缓冲区。其实就是模拟BufferedReader。

分析:
* 缓冲区中无非就是封装了一个数组
* 并对完提供了更多的方法对数组进行访问
* 其实这些方法最终操作的都是数组的角标
* 缓冲的原理:
* 其实就是从源中获取一批数据装进缓冲区中
* 在从缓冲区中不断取出一个一个数据
* 在此次取完后,再从源中继续取一批数据进缓冲区
* 当源中的数据取光时,用-1作为结束标记

public class MyBufferedReader {
private FileReader r;
//定义一个数组作为缓冲区
private char[] buf=new char[1024];
//定义一个指针用于操作这个数组中的元素。当操作到最后一个元素后,指针归0;
private int pos=0;
//定义一个计数器用于记录缓冲区的数据个数。当数据减到0,就从源中继续读取数据到缓冲区中。
private int count=0; MyBufferedReader(FileReader r){
this.r=r;
} public int myRead() throws IOException{
if(count==0){
count=r.read(buf);
pos=0;
}
if(count<0){
return -1;
}
char ch=buf[pos++];
count--;
return ch; } public String myReadLine() throws IOException{
StringBuilder sb=new StringBuilder();
int ch=0;
while ((ch=myRead())!=-1){
if(ch=='\r')
continue;
if(ch=='\n')
return sb.toString();
//将缓冲区中读到的字符,存储到缓存行数据的缓存区中。
sb.append(ch);
}
if(sb.length()!=0){
return sb.toString();
}
return null;
} }

IO流(二)__BufferedReader和BufferedWriter的更多相关文章

  1. Java学习之路(十二):IO流<二>

    字符流 字符流是可以直接读写字符的IO流 使用字符流从文件中读取字符的时候,需要先读取到字节数据,让后在转换为字符 使用字符流向文件中写入字符时,需要把字符转为字节在写入文件 Reader和Write ...

  2. Java IO流(二)

    目录 字节缓冲流 概述 BufferedOutputStream类 继承父类的共性成员方法 构造方法 BufferedInputStream类 继承自父类的方法: 构造方法 文件复制练习(增强版 使用 ...

  3. Java基础IO流(二)字节流小案例

    JAVA基础IO流(一)https://www.cnblogs.com/deepSleeping/p/9693601.html ①读取指定文件内容,按照16进制输出到控制台 其中,Integer.to ...

  4. IO流二

    1 数据流(了解) 1.1 概述 为了方便的操作java语言的基本数据类型和String类型的数据,可以使用数据流. 数据流的分类: DataInputStream DataOutputStream ...

  5. IO流(二)

    一:字符流 字符输入流 写入文件字符流 import java.io.FileWriter; import java.io.IOException; //fileWriter public class ...

  6. IO流---字符流(FileWriter, FileReader ,BufferedWriter,BufferedReader)

    IO   Input  Output IO流用来处理设备之间的数据传输. java对数据的操作是通过流来实现的. 流按流向分:输入流,输出流     是相对内存而言的.把硬盘的数据读取到内存中就是输入 ...

  7. JAVA之旅(二十五)——文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine

    JAVA之旅(二十五)--文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine 我们继续IO上个篇 ...

  8. IO流(二)

    二.File类 概述 文件和目录路径名的抽象表示形式 构造方法 public File(String pathname) public File(String parent,String child) ...

  9. Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)

    Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...

随机推荐

  1. WebService如何根据对方提供的xml生成对象

    最近写接口接到一个需求,就是他们推送数据过来,我们这边来提供服务接口. 对方用的是.NET WebService,已经把所有的对象格式定义好了,可能是为了顾及各个平台的通用性,所以只在文档中提供了xm ...

  2. 第七节:Class与Style绑定

    1.绑定class,v-bind:class  简写为::class 对象方式: <!-- 绑定一个class对象,也可以绑定data中的对象--> <span v-bind:cla ...

  3. java三大循环:for、while、do...while

    1.while和do...while的区别: while 与 do...while之间的区别:如果布尔表达式第一次执行的结果就为false,那么while循环一次也不执行:do...while循环会执 ...

  4. java.lang.Long cannot be cast to java.lang.Integer解决办法

    情景: mybatis连接oracle 报错: 测试增的时候,报错 Java.lang.Long cannot be cast to  java.lang.Integer:删改没有报错. 排查过程: ...

  5. Testing - 测试基础 - 阶段

    估算 测试对软件工作量的估算的准确性 测试评估软件系统的状况的准确性 关注点: 不准确的估算 不适当的开发过程 不真实的状态报告 如何知道对工作量的估算是正确的 估算工作量的工具很容易出错 对软件工作 ...

  6. Spring Boot异常处理详解

    在Spring MVC异常处理详解中,介绍了Spring MVC的异常处理体系,本文将讲解在此基础上Spring Boot为我们做了哪些工作.下图列出了Spring Boot中跟MVC异常处理相关的类 ...

  7. 常用的Webservice接口

    常用的Webservice接口 . 查询手机:http://www.yodao.com/smartresult-xml/search.s?type=mobile&q=手机号码 . 查询IP:h ...

  8. [New Portal]Windows Azure Cloud Service (34) TechEd 2013 North America关于Azure的最新消息

    <Windows Azure Platform 系列文章目录> 话说TechEd 2013 US上个月3-6日在美国举办了,笔者的文章又有点姗姗来迟了. 需要了解相关视频的网友,请浏览ht ...

  9. 谷歌插件Image downloader开发之popup

    Image downloader的交互逻辑是这样的:用户点击Image downloader的图标,会向页面(content script,见上一篇文章:谷歌插件Image downloader开发之 ...

  10. 【数据压缩】LZ77算法原理及实现

    1. 引言 LZ77算法是采用字典做数据压缩的算法,由以色列的两位大神Jacob Ziv与Abraham Lempel在1977年发表的论文<A Universal Algorithm for ...