美文网首页
IO缓存流

IO缓存流

作者: test_dw | 来源:发表于2019-04-19 10:22 被阅读0次

    为啥要缓存流?

    • 答:当需要将数据写入磁盘时,在每一次读写都会访问硬盘,这样就会导致频繁的IO操作,降低了程序的性能,而缓存流就是为了解决这一问题而出生的。

    什么是缓存流?

    • da:就是将需要读入或者写入的数据,一次性的读/写较多到缓存流之中,之后的操作就可以从缓存流中进行数据的读取/写入,从而减少了IO操作。就像吃饭一样,先把饭盛到饭碗,就不用每一口都要到电饭煲里取。

    字节流与缓存流

    • 字节流是每对一个字节进行操作都要进行一次io,而缓存流在写入数据的时候,会先把数据写入到缓存区,直到缓存区达到一定的量,才把这些数据,一起写入到硬盘中去。

    使用BufferedReader缓存流读取数据

    • 缓存字符流BufferedReader可以一次性读取一行数据。
    package twodoge;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    
    public static void main(String args[]){
        File f = new File('D:twodoge.txt');
        //创建文字字符流
        //缓存流必须建立在一个基础流上
        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();
        }
    }
    

    使用PringWriter缓存流写出数据

    • PrintWriter 缓存字符输出流, 可以一次写出一行数据
    package twodoge;
    
    import java.io.File;
    import java.io.FileWriter;
    import java.io.PrintWriter;
    import java.io.IOException;
    
    public class myPrintWriter {
        public static viod main(String args[]) {
    
            File f = new File("D://twodoge.txt");
            try (
                FileWriter fw = new FileWriter(f);
                PrintWriter pw = new PrintWriter(fw);
            )
            {
                pw.printWriter("test1");
                pw.printWriter("test2");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    

    flush

    • 有时候需要需要立即把数据写入到磁盘中,这时候就要用flush。
    package twodoge;
    
    import java.io.File;
    import java.io.FileWriter;
    import java.io.PrintWriter;
    import java.io.IOException;
    
    public class myPrintWriter {
        public static viod main(String args[]) {
    
            File f = new File("D://twodoge.txt");
            try (
                FileWriter fw = new FileWriter(f);
                PrintWriter pw = new PrintWriter(fw);
            )
            {
                pw.println("test1");
                fw.flush();
                pw.println("test2");
                fw.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:IO缓存流

          本文链接:https://www.haomeiwen.com/subject/rctfgqtx.html