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. html_01之基础标签

    1.嵌套规则:①行内不能嵌套块:②p不能嵌套块:③非布局元素不要嵌套div: 2.标准属性:①id:定义元素唯一名称(a.布局时用:b.JS用):②title:鼠标移入时提示的文字:③class:定义 ...

  2. 第五章 运输层(UDP和TCP三次握手,四次挥手分析)

    序言   通过这章,可以知道其实三次握手和四次挥手其实真的好简单,通过这章的学习,我相信你也会同样的认为,以后在也不需要听到别人问三次握手的过程而自己一脸懵逼了,觉得人家好屌,其实也就是他懂你不懂,仅 ...

  3. SSIS的CheckPoint用法

    在SSIS的Package Property中有CheckPoints的属性目录,CheckPoint是SSIS的Failover Feature.通过简单的配置CheckPoint,能够在Packa ...

  4. Enterprise Solution 界面设计规范

    Enteprise Solution有一套自己的界面设计规范,也是很多年(10年以上)管理软件界面精华的积累.没有一个软件从一开始就很善于界面设计,许多个小小的改善,比如控件位置的移动,控件摆放顺序的 ...

  5. 用命令行编译java并生成可执行的jar包

    用命令行编译java并生成可执行的jar包 1.编写源代码. 编写源文件:CardLayoutDemo.java并保存,例如:I:\myApp\CardLayoutDemo.java.程序结构如下: ...

  6. Uvaoj 10048 - Audiophobia(Floyd算法变形)

    1 /* 题目大意: 从一个点到达另一个点有多条路径,求这多条路经中最大噪音值的最小值! . 思路:最多有100个点,然后又是多次查询,想都不用想,Floyd算法走起! */ #include< ...

  7. SQL*Loader之CASE3

    CASE3 1. SQL文件 [oracle@node3 ulcase]$ cat ulcase3.sql set termout off rem Do not clean up table beca ...

  8. MySQL的学习--触发器

    MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 创建触发器 在MySQL中,创建触发器语法如下 ...

  9. Skeljs – 用于构建响应式网站的前端开发框架

    skelJS 是一个轻量级的前端框架,用于构建响应式站点和应用程序.让设计人员和开发人员可能够使用四个强大的组件:CSS 网格系统,响应式处理程序,CSS 的快捷方式和插件系统. 您可能感兴趣的相关文 ...

  10. JavaScript中以一个方法作为参数的写法

    前言,我们写js的时候,经常会看到一些方法,比如说: $("#ids").click(function( alert("Click me"); )); ---- ...