一.字符流的缓冲区

1.什么是缓冲区
       缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,

这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

2.为什么要引入缓冲区

缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。是为了减少系统调用,使其能够高效率工作。

3.字符流的缓冲

    3.1 BufferWriter实例

 1 import java.io.*;
 2
 3 //使用BufferedWriter缓冲区对象来读取数据
 4 public class BufferedWriterDemo {
 5
 6     public static void main(String[] args) throws IOException{
 7         //新建一个文件流来存储数据,并传递给BufferedWriter对象
 8         FileWriter fw =new FileWriter("BuffWriter_copy.txt");
 9         //新建缓冲区对象并将文件流对象传递给其构造函数
10         BufferedWriter bufw=new BufferedWriter(fw);
11         //往缓冲区中写数据
12         for(int i=0;i<10;i++){
13
14          bufw.write("abcde"+i);
15
16          bufw.newLine();
17          //将内存中的数据刷新到文件中
18          bufw.flush();
19         }
20         //关闭缓冲区
21         bufw.close();
22     }
23
24 }

运行结果

3.2 BufferedReader实例

import java.io.*;/** 建立BufferedReader缓冲区,使用newLine和readLine方法*/
public class BUfferedReaderDemo {public static void main(String[] args) throws IOException {//新建文件流,并将数据传递给缓冲区构造函数FileReader fr = new FileReader("test.txt") ;//新建缓冲区,调用其构造函数BufferedReader bufr = new BufferedReader(fr);//将数据打印//因为BufferedReader返回的最后数据为String,如果到了最后则为nullString line=null;//调用BufferedReader的readLine方法while((line=bufr.readLine())!=null){System.out.println(line);}}}

运行结果

二.综合实例

利用字符缓冲区来将一个文件内容复制到另一文件中

import java.io.*;
/** 利用字符缓冲区来将一个文件内容复制到另一文件中*/
public class BufferWriterDemo {public static void main(String[] args) {//创建一个缓冲区写对象,并初始化为nullBufferedWriter bufw=null;//创建一个缓冲区读对象,并初始化为nullBufferedReader bufr=null;try{//缓冲区的构造函数必须 有一个参数//新建一个写文件的流并传递给缓冲区写对象的构造函数bufw=new BufferedWriter(new FileWriter("buffer_copy.txt"));//新建一个读文件的流并传递给缓冲区读对象的构造函数bufr=new BufferedReader(new FileReader("FileRead.java"));//缓冲区返回一个String值,当缓冲区中没有数据是值为nullString line=null;//缓冲区写对象有一个readLine函数,用来按行读取数据while((line=bufr.readLine())!=null){//缓冲区写对象也有write函数
                bufw.write(line);//newLine将读到的数据换行,也就是按原来数据格式一致来存储
                bufw.newLine();//刷新数据到文件中
                bufw.flush();}}catch(IOException e){throw new RuntimeException("读写错误");}finally{try{if(bufw!=null){bufw.close();}}catch(IOException e){throw new RuntimeException("写错误");}try{if(bufr!=null){bufr.close();}}catch(IOException e){throw new RuntimeException("读错误");}}}}

运行结果

转载于:https://www.cnblogs.com/3WWanXiang/p/4575219.html

Java IO(input output)流二相关推荐

  1. Java IO: 其他字符流(下)

    转载自   Java IO: 其他字符流(下) 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackRe ...

  2. Java——IO(打印流)

    1,打印字节流(PrintStream)的概述: 打印流可以很方便的将对象的toString()结果输出并且自动加上换行,而且可以使用自动刷出的模式 System.out就是一个PrintStream ...

  3. java.io.IOException: output.properties data exceeds its limit [2048] hue的调度

    java.io.IOException: output.properties data exceeds its limit [2048]  hue的调度问题 添加配置 输出大小默认是2048,在ooz ...

  4. 解决 rsync IO input / output error , failed verification — update discarded

    rsync出错: IO input / output error (5) failed verification - update discarded (will try again). 将目的文件删 ...

  5. 系统学习 Java IO (六)----管道流 PipedInputStream/PipedOutputStream

    目录:系统学习 Java IO---- 目录,概览 PipedInputStream 类使得可以作为字节流读取管道的内容. 管道是同一 JVM 内的线程之间的通信通道. 使用两个已连接的管道流时,要为 ...

  6. java io 字节流 字符流

    1.流的概念 在程序中,所有的数据都是以流的形式进行传输和保存的,当程序需要数据的时候要使用输入流读取数据,而当程序需要保存数据时要使用输出流写数据 2.字节流和字符流 字节流:处理单元为1个字节,操 ...

  7. java IO(输入输出) 字符流

    //读取文件中的字符 package zhi_jie_liu;import java.io.*;public class Example08 {public static void main(Stri ...

  8. java io异常处理_IO流异常处理

    import java.io.File; import java.io.FileOutputStream; import java.io.IOException; /* *IO流异常处理 *try c ...

  9. Java IO 之 介质流

    2019独角兽企业重金招聘Python工程师标准>>> 自己工作虽有将近三年了,也算得上是一个程序老手了,但对IO这块一直一知半解,以至于每次写IO相关的代码时,总不能随心所欲的写出 ...

  10. java IO之 序列流 集合对象Properties 打印流 流对象

    序列流 也称为合并流. SequenceInputStream 序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从 第一个输入 ...

最新文章

  1. quartz+spring框架动态调整频率实践
  2. rsyslog syslog详解
  3. python个人所得税怎么写分录_个人所得税的会计分录!
  4. SQLite指南(5) - PRAGMA命令用法(完整)
  5. 解决web网站被挂马清除方法
  6. numpy—np.diag(v, k=0)
  7. HTTP协议和HttpClient的入门
  8. android java调用js方法参数_android中利用webview调用网页上的js代码 Java代码调用js并传递参数...
  9. SCM供应链协同管理系统解决方案
  10. AIDA64测试CPU性能 AIDA64测试CPU需要多久
  11. python字典的key提取_python 字典操作提取key,value
  12. [FAQ20527] 如何关闭OTG功能
  13. 无法直接在IE中打开PDF文件的解决方法
  14. Longest Increasing Subsequence
  15. Oracle批量低耗清除历史数据
  16. 没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
  17. speedoffice表格中如何隐藏网络线
  18. 【玩转ms17-010】mysql数据库-脱裤实践
  19. 用ddddocr识别图形字符验证码
  20. Codeforces 1037E Trips

热门文章

  1. linux ati显卡驱动下载,LINUX 下ati最新显卡驱动下载
  2. python json文件太大_python - python json.dump创建的文件太大 - 堆栈内存溢出
  3. vacode允许c_使用VS code编译运行C,C++,Java程序
  4. 过年了,就别再背电脑回家。
  5. markdown引入代码_给你自己的博客加个 Markdown
  6. Spring MVC登录实例
  7. 微信小程序php java_PHP实现微信小程序用户授权的工具类示例
  8. 20190809:旋转数组
  9. html保存为svg,JavaScript – 将内联SVG保存为JPEG / PNG / SVG
  10. linux下编写sql脚本,在Linux系统中编写简易shell脚本,向PLSQL表中插入数据