码迷,mamicode.com
首页 > 其他好文 > 详细

一、I/O操作(缓存流,数据流,对象流)

时间:2018-02-27 19:32:32      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:world   操作   而不是   fileinput   pack   java   out   i/o   字节   

一、缓存流

  以介质是硬盘为例子说明,字节流和字符流的缺点:

每次读写的时候,都会访问硬盘,如果读写频率比较高的时候,性能不佳。为了解决问题,采用缓存流。

  缓存流在读取的时候,会一次性读较多的数据到缓存中,以后每一次的读取,都是在缓存中访问,直到缓存中的数据读取完毕,再到硬盘中区读取。

  缓存流在写入数据的时候,会先把数据写入到缓存区,直到缓存区达到一定的量,才把这些数据,一起写入到硬盘中去,按照这种方式,就不会像字节流,字符流那样每次写一个字节都访问硬盘,减少了I/O操作。

1、使用缓存流读取数据

BufferedReader缓存字符输入流,可以一次读取一行数据

技术分享图片
package stream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class TestStream{
    public static void main(String[] args){
        File f=new File("d/source/LOL.exe");
        try(FileReader fr=new FileReader(f);BufferedReader br=new BufferedReader(fr);){
                while(true){
                        String line=br.readLine();//一次读一行。
                        if(line==null)break;
                        System.out.println(line);
                }
        }catch(IOException e){
                e.printStackTrace();
        }
    }
}
View Code

2、使用缓存流写入数据

PrintWriter缓存字符输出流,可以一次写出一行数据

技术分享图片
package stream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class TestStream{
    public static void main(String[] args){
        File f=new File("d/source/LOL.exe");
        try(FileWriter fw=new FileWriter(f);PrintWriter pw=new PrintWriter(fw);){
                {
                        pw.println("hello world");
                        pw.println("hello kitty");
                }
        }catch(IOException e){
                e.printStackTrace();
        }
    }
}
View Code

3、使用flush

有时候,需要立即把数据写入到硬盘,而不是等缓存满了才写进去,这时候就要用flush

 

一、I/O操作(缓存流,数据流,对象流)

标签:world   操作   而不是   fileinput   pack   java   out   i/o   字节   

原文地址:https://www.cnblogs.com/drq1/p/8479983.html

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