码迷,mamicode.com
首页 > 编程语言 > 详细

java-缓存流

时间:2021-02-17 14:48:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:try   catch   oid   lin   pac   内容   package   line   ima   

前言

缓存流存在的意义是减少程序读取和写入硬盘的次数,读取和写入都经由缓存流。

读取时一次性从硬盘中读一定数量的数据进入缓存流,需要时从缓存流取出,这样就减少了访问硬盘的次数。

写入时先写入缓存流,只有当缓存流里的数据超出一定量之后再一次性写入到硬盘中,这样也可以减少访问硬盘的次数。


使用缓存流读取数据

BufferedReader需要传入一个已经生成好的读取流(FileReader),这样才能建立缓存流的连接,便于读取

 1 package IO流;
 2 
 3 import java.io.File;
 4 import java.io.FileReader;
 5 import java.io.BufferedReader;
 6 import java.io.IOException;
 7 
 8 public class 使用缓存流读取数据 {
 9 
10     public static void main(String[] args) {
11         
12         File f=new File("D://1.txt");
13         try(
14             FileReader fr=new FileReader(f);//在try语句中创建自动关闭流的方式,如果想同时创建多个流就要采用格式。
15             BufferedReader br=new BufferedReader(fr);
16             ){
17             String s=br.readLine();//记录缓存流中的内容
18             while(s!=null)
19             {
20                 System.out.println(s);
21                 s=br.readLine();//缓存流每读出一行内容,缓存流中就会删除这一段内容。
22             }
23         }catch(IOException e){
24             e.printStackTrace();
25         }
26     }
27 }

技术图片

 

 

 1 package IO流;
 2 
 3 import java.io.File;
 4 import java.io.FileReader;
 5 import java.io.BufferedReader;
 6 import java.io.IOException;
 7 
 8 public class 使用缓存流读取数据 {
 9 
10     public static void main(String[] args) {
11         
12         File f=new File("D://1.txt");
13         try(
14             FileReader fr=new FileReader(f);//在try语句中创建自动关闭流的方式,如果想同时创建多个流就要采用格式。
15             BufferedReader br=new BufferedReader(fr);
16             ){
17             br.readLine();
18             String s=br.readLine();//记录缓存流中的内容
19             while(s!=null)
20             {
21                 System.out.println(s);
22                 s=br.readLine();//缓存流每读出一行内容,缓存流中就会删除这一段内容。
23             }
24         }catch(IOException e){
25             e.printStackTrace();
26         }
27     }
28 }

技术图片

 

 我放上了两段代码和结果,两者不同的地方在于第17行,readLine()函数每次读取都会删除掉缓存流中对应的内容,不管读出来的内容是否被一个String保存过。


使用缓存流写出数据

BufferedWriter和BufferedReader一样,都需要传入一个已经生成好的流,从而建立连接,方便写出数据

 1 package IO流;
 2 
 3 import java.io.File;
 4 import java.io.FileWriter;
 5 import java.io.BufferedWriter;
 6 import java.io.IOException;
 7 
 8 public class 使用缓存流写出数据 {
 9 
10     public static void main(String[] args) {
11         File f=new File("D://1.txt");
12         try(
13                 FileWriter fw=new FileWriter(f);
14                 BufferedWriter bw=new BufferedWriter(fw);
15             ){
16                 bw.write("May");
17                 bw.newLine();
18                 bw.write("the force be with you!");
19             }    
20             catch(IOException e) {
21                 e.printStackTrace();
22             }
23     }
24 

技术图片

 

 


Flush

一种跳过缓存,立即将数据写进硬盘的方法

 1 package IO流;
 2 
 3 import java.io.File;
 4 import java.io.FileWriter;
 5 import java.io.PrintWriter;
 6 import java.io.IOException;
 7 
 8 
 9 public class Flush {
10 
11     public static void main(String[] args) {
12         File f=new File("D://1.txt");
13         try(
14             FileWriter fw=new FileWriter(f);
15             PrintWriter pw=new PrintWriter(fw);
16             ){
17             pw.print("Hello,");
18             pw.flush();//强制将缓存中的内容写入到硬盘中,无论缓存是否已经满了
19             pw.print("World!");
20             pw.flush();
21         }catch(IOException e) {
22             e.printStackTrace();
23         }
24     }
25 }

技术图片

 

 

 

java-缓存流

标签:try   catch   oid   lin   pac   内容   package   line   ima   

原文地址:https://www.cnblogs.com/wangqianming12138/p/14402431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!