java 缓冲流 Buffer

缓冲流 Buffer :设置缓冲区加快执行效率

子类:

 (一)BufferedInputStream : 缓冲输入字节流 ,目的:提高读取文件的效率
   注意: BufferedInputStream 他是没有读写数据的功能
  内部实现 : 你面维护了一个8字节的byte数组。
  使用步骤:
        1.找到一个目标文件.
        2.建立通道 new FileInputStream(" ");
        3.创建一个缓冲字节输入流  new BufferedInputStream(FileInputStream);
        4.读取数据 read();
        5.关闭资源 close();

 (二)BufferedOutputStream :缓冲输出字节流    内部维护了一个 8k的字节数组
  作用: 提高文件的输出的效率,可以提供其他的方法。
  使用:
    1.找目标
    2.建立通道 FileOutputStream
    3.创建一个缓冲字节输出流
    4.写数据,不会写入到磁盘中。  如果数组中的数据已经满了,才会自动将数据写入到磁盘中。
    5.将数据写入到磁盘 : 调用flush(),或者关闭资源。
    6.关闭资源。

 (三)BuffredRead 缓冲输入字符流。
       有一个扩展的功能:readLine(); // 可以一次读一行文字。

 (四)BufferedWriter: 缓冲输出字符流
          内部提供一个8192长度的字符数组作为这样一个缓冲区。
      BufferedWriter作用 :提高写入的效率,拓展FileWriter的功能。

    newLine();  //换行写入数据

简单的字节缓冲流案例

 1 import java.io.BufferedInputStream;
 2 import java.io.BufferedOutputStream;
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7
 8 public class buffered {
 9
10     /**
11      * @param args
12      * @throws IOException
13      */
14     public static void main(String[] args) throws IOException {
15         // TODO Auto-generated method stub
16         //bufInTest();
17         bufOutTest();
18     }
19
20     //(1)BufferedInputStream  的使用
21     public static void bufInTest() throws IOException{
22         //1.找到目标
23         File file = new File("D:\\a.txt");
24         //2.创建通道
25         FileInputStream fis = new FileInputStream(file);
26
27         //**3.创建一个缓冲输入字节流******
28         BufferedInputStream bfis = new BufferedInputStream(fis);
29
30         //4.开始写入数据
31          int content = 0; // 一次只会取一个字节
32         while ((content= bfis.read())!= -1) { // 还是一个一个的读取 问什么可以提高效率呢?
33             System.out.print((char)content);
34         }
35         //5.关闭通道
36         bfis.close();
37     }
38
39     //(2)BufferedOutputStream   的使用
40     public static void bufOutTest() throws IOException{
41
42         //1.找目标
43         File file = new File("D:\\b.txt");
44         //2.创建通道
45         FileOutputStream fos = new FileOutputStream(file);
46
47         //3.创建缓冲流
48         BufferedOutputStream bfos = new BufferedOutputStream(fos);
49
50         //4.创建写入文件的数据
51         String string  = "good good study day day up";
52
53         //5.写数据, 到这一步只是将数据保存到内存中字节数组中。
54         bfos.write(string.getBytes());
55
56         //6.再刷新 将数据写入到磁盘中
57         //bfos.flush();
58
59         //7.关闭资源
60         bfos.close();//内部会实现flush();
61     }
62 }

简单的字符缓冲流案例

 1 import java.io.BufferedReader;
 2 import java.io.BufferedWriter;
 3 import java.io.File;
 4 import java.io.FileReader;
 5 import java.io.FileWriter;
 6 import java.io.IOException;
 7
 8 public class fileReader {
 9
10     public static void main(String[] args) throws IOException {
11         testBufferedWriter();
12         testBufferedRead();
13     }
14         //(1)缓冲输出字符流的使用
15     public static void testBufferedWriter() throws IOException{
16
17         //1.建立一个通道,指定一个路径
18         FileWriter fiw = new FileWriter("D:\\a.txt",true);
19
20         //2.创建缓冲流
21         BufferedWriter bfw = new BufferedWriter(fiw);
22
23         //让数据换行显示
24         bfw.newLine();  //换行写入数据
25
26         //3.开始写入数据
27         bfw.write("上课不要吃东西");
28
29         //4.关闭资源
30         bfw.close(); // 关闭资源之前会做一个刷新操作。调用flush()方法。
31     }
32
33     //(2)缓冲输入字符流的使用
34     public static void testBufferedRead() throws IOException{
35
36         //1.创建通道并且指定路径
37         FileReader fir = new FileReader("D:\\b.txt");
38
39         //2.创建缓冲流
40         BufferedReader bfr = new BufferedReader(fir);
41
42         //3.1、开始读取数据(一次读取一个字节)
43         int content = 0;
44         while ((content = bfr.read()) != -1) {
45
46             System.out.print((char)content);
47         }
48
49         //3.2、readLine()扩展功能,读取一行数据
50         String string1 = bfr.readLine();
51         System.out.println(string1);
52
53         //一次读取一行数据(返回字符串),效率更高
54         String string = null;
55         while ((string = bfr.readLine()) != null) {
56             System.out.println(string);
57         }
58
59         //4.关闭
60         bfr.close();
61     }
62         
时间: 2025-01-02 16:02:38

java 缓冲流 Buffer的相关文章

java 缓冲流

缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写效率,同时增加了一些新的方法. 四种缓冲流 BufferedReader(Reader in) BufferedReader(Reader in,int sz)//sz表示自定义缓冲区大小 BufferedWriter(Writer out) BufferedWriter(Writer out,int sz) BufferedInputStream(InputStream in) BufferedInputStream(

java缓冲流,BufferedReader,BufferedWriter 详解

缓冲流,BufferedReader,BufferedWriter 1)BufferedReader,BufferedWriter是更高级的流,二者的源和目的地必须是字符输入流和字符输出流.如果把字符输入流做为BufferedReader流的源,把字符输出流作为BufferedWriter流的目的地,那么BufferedReader,BufferedWriter将有更强的读.写能力. //构造函数 BufferedReader(Reader in); BufferedWriter(Writer

关于Java缓冲流的一点误解

我在网上看到很多输入流和输出流的代码是这样的: public class BufferedTest { public static void main(String[] args) { InputStream in = null; OutputStream out = null; try { // 此处为演示效果 将in和out都定义在try块内 防止自动关闭 in = new BufferedInputStream(new FileInputStream("collect.txt")

java的 IO流之缓冲流(转载)

java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装.当对文件或其他目标频繁读写或操作效率低,效能差.这时使用缓冲流能够更高效的读写信息.因为缓冲流先将数据缓存起来,然后一起写入或读取出来.所以说,缓冲流还是很重要的,在IO操作时记得加上缓冲流提升性能. 缓冲流分为字节和字符缓冲流 字节缓冲流为: BufferedInputStream-字节输入缓冲流 BufferedOutputStream-字节输出缓冲流 字符缓冲流为: BufferedReader-字符

【java的 IO流之缓冲流】

java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装.当对文件或其他目标频繁读写或操作效率低,效能差.这时使用缓冲流能够更高效的读写信息.因为缓冲流先将数据缓存起来,然后一起写入或读取出来.所以说,缓冲流还是很重要的,在IO操作时记得加上缓冲流提升性能. 缓冲流分为字节和字符缓冲流 字节缓冲流为: BufferedInputStream-字节输入缓冲流 BufferedOutputStream-字节输出缓冲流 字符缓冲流为: BufferedReader-字符

Java I/O流操作(二)---缓冲流[转]

转自:http://blog.csdn.net/johnny901114/article/details/8710403 一.BufferWriter类 IO的缓冲区的存在就是为了提高效率,把要操作的数据放进缓冲区,然后一次性把缓冲区的内容写到目的地,而不是写一次就往目的地写一次. 在这里要注意的是当我们关闭了缓冲区对象实际也关闭了与缓冲区关联的流对象. BufferWriter类 try { FileWriter fw =new FileWriter("test.txt"); //使

Java IO 过滤流 字节缓冲流 BufferedInput/OutputStream

Java IO 过滤流 字节缓冲流 BufferedInput/OutputStream @author ixenos 概念 BufferedInput/OutputStream是实现缓存的过滤流,他们分别是FilterInput/OutputStream的子类. BufferedInputStream工作流程 stream-->buf--read buf-->I 1.当一个BufferedInputStream被创建时,一个内部的缓冲区 byte[] buf = new byte[size]

Java IO-3 转换流和缓冲流

1.转换流 OutputStreamWriter和InputStreamReader 1 package demo04; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 7 public class InputStreamReaderDemo { 8 public static void main(String[] args) throw

java 节点流(字符流,字节流)和包装流(缓冲流,转换流)

结点流:直接对File类进行操作的文件流 package stream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import org.junit.jupiter.api.Test; /* * 流的体系结构: 抽象基类 节点流(或文件流) 缓冲流(处理流的一