BufferedIo

缓冲流

 缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法

BufferedReader(Reader in)
BufferedReader(Reader in,int sz)//sz为自定义缓冲区的大小
BufferedWriter(Writer out)
BufferedWriter(Writer out,int sz)
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in,int size)
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out,int size)
  • 缓冲输入流支持其父类的mark和reset方法
  • BufferedReader提供了ReadLine方法用于读取一行字符串(以r或n分隔)
  • BufferedWriter提供了newLine用于写入一个分隔符
  • 对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法将会使内存中的数据立刻写出

BufferedInputStream

import java.io.*;

public class TestFileInputStream {
    public static void main(String[] args) {
        try {
            FileInputStream fis = 
                    new FileInputStream("D:/test.txt");
            BufferedInputStream bis = 
                    new BufferedInputStream(fis);
            int c = 0;
            System.out.println(bis.read());
            System.out.println(bis.read());
            bis.mark(100);//标记第100个字符,从第100个字符往外读
            for(int i = 0;i <= 10 && (c = bis.read()) != -1;i++) 
                System.out.println((char)c + " ");
            System.out.println();
            bis.reset();//回到标记
            for(int i = 0;i <= 10 && (c = bis.read()) != -1;i++)
                System.out.println((char)c + " ");
            bis.close();
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
}

BufferedReader(Writer)

import java.io.*;

public class TestBuffered{

    public static void main(String[] args) {
        try {
            BufferedWriter bw = 
                    new BufferedWriter(new FileWriter("D:/test4.txt"));
            BufferedReader br = 
                    new BufferedReader(new FileReader("D:/test4.txt"));
            String s = null;
            for(int i = 1;i <= 100;i++) {//写入100行随机数
                s = String.valueOf(Math.random());
                bw.write(s);
                bw.newLine();
            }
            bw.flush();
            while((s = br.readLine()) != null) {
                System.out.println(s);
            }
            bw.close();
            br.close();
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户3030674的专栏

java线程控制安全

在线程运行的时候,有时会出现线程安全问题 例如:买票程序,有可能会出现不同窗口买同一张编号的票

560
来自专栏Java帮帮-微信公众号-技术文章全总结

Java多线程详解1

Java多线程详解 ? ? ? ? Java线程:概念与原理 一、操作系统中线程和进程的概念 现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 进...

3879
来自专栏noteless

[十八]JavaIO之FileReader 和 FileWriter

FileReader 和 FileWriter继承了InputStreamReader 和OutputStreamWriter

611
来自专栏二进制文集

JDK源码分析 多线程

对于JDK源码分析的文章,仅仅记录我认为重要的地方。源码的细节实在太多,不可能面面俱到地写清每个逻辑。所以我的JDK源码分析,着重在JDK的体系架构层面,具体源...

672
来自专栏你不就像风一样

Java多线程核心技术(六)线程组与线程异常

调用与线程有关的方法是造成线程状态改变的主要原因,其关系如图所示:(图片来源于网络)

642
来自专栏JavaQ

高并发编程-Condition深入解析

Condition接口位于java.util.concurrent.locks包下,实现类有 AbstractQueuedLongSynchronizer.Co...

654
来自专栏从零开始学 Web 前端

09 - JavaSE之线程

PS: 如果我们没有 new一个 Thread 对象出来,而是直接使用 MyThread 的 run 方法(mt.run()),这就是方法调用,而不是启动线程了...

1125
来自专栏JavaQ

Java多线程编程笔记之Condition

本篇内容基于JDK7,涉及Condition常用方法。 1.概述 Condition接口位于java.util.concurrent.locks包下,实现类有 ...

2625
来自专栏码农笔录

斐波那契数列-Java

922
来自专栏Java技术栈

Java多线程神器:join使用及原理

join() join()是线程类 Thread的方法,官方的说明是: Waits for this thread to die. 等待这个线程结束,也就是说当...

3285

扫码关注云+社区