• java


    缓冲流(高效流)

    在我们学习字节流与字符流的时候,大家都进行过读取文件中数据的操作,读取数据量大的文件时,读取的速度会很慢,很影响我们程序的效率,那么,我想提高速度,怎么办?

    Java中提高了一套缓冲流,它的存在,可提高IO流的读写速度

    缓冲流,根据流的分类分类字节缓冲流字符缓冲流

    字节缓冲流

    字节缓冲流根据流的方向,共有2个

    l  写入数据到流中,字节缓冲输出流 BufferedOutputStream

    l  读取流中的数据,字节缓冲输入流 BufferedInputStream

     

    它们的内部都包含了一个缓冲区,通过缓冲区读写,就可以提高了IO流的读写速度

    字节缓冲输出流BufferedOutputStream

    通过字节缓冲流,进行文件的读写操作 写数据到文件的操作 

    l  构造方法

    public BufferedOutputStream(OutputStream out)创建一个新的缓冲输出流,以将数据写入指定的底层输出流。

     

    public class BufferedOutputStreamDemo01 {

        public static void main(String[] args) throws IOException {

           

            //写数据到文件的方法

            write();

        }

     

        /*

         * 写数据到文件的方法

         * 1,创建流

         * 2,写数据

         * 3,关闭流

         */

        private static void write() throws IOException {

            //创建基本的字节输出流

            FileOutputStream fileOut = new FileOutputStream("abc.txt");

            //使用高效的流,把基本的流进行封装,实现速度的提升

            BufferedOutputStream out = new BufferedOutputStream(fileOut);

            //2,写数据

            out.write("hello".getBytes());

            //3,关闭流

            out.close();

        }

    }

    字节缓冲输入流 BufferedInputStream

    刚刚我们学习了输出流实现了向文件中写数据的操作,那么,现在我们完成读取文件中数据的操作

    l  构造方法

    public BufferedInputStream(InputStream in)

     

        /*

         * 从文件中读取数据

         * 1,创建缓冲流对象

         * 2,读数据,打印

         * 3,关闭

         */

        private static void read() throws IOException {

            //1,创建缓冲流对象

            FileInputStream fileIn = new FileInputStream("abc.txt");

            //把基本的流包装成高效的流

            BufferedInputStream in = new BufferedInputStream(fileIn);

            //2,读数据

            int ch = -1;

            while ( (ch = in.read()) != -1 ) {

                //打印

                System.out.print((char)ch);

            }

            //3,关闭

            in.close();

        }

    字符缓冲流

    l  字符缓冲输入流 BufferedReader

    l  字符缓冲输出流 BufferedWriter

    完成文本数据的高效的写入与读取的操作

    字符缓冲输出流 BufferedWriter

    将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

    l  方法:

    void newLine() 根据当前的系统,写入一个换行符

    /*

     * BufferedWriter 字符缓冲输出流

     * 方法

     * public void newLine()写入一个行分隔符

     *

     * 需求: 通过缓冲输出流写入数据到文件

     * 分析:

     * 1,创建流对象

     * 2,写数据

     * 3,关闭流

     *

     */

    public class BufferedWriterDemo {

        public static void main(String[] args) throws IOException {

            //创建流

            //基本字符输出流

            FileWriter fileOut = new FileWriter("file.txt");

            //把基本的流进行包装

            BufferedWriter out = new BufferedWriter(fileOut);

            //2,写数据

            for (int i=0; i<5; i++) {

                out.write("hello");

                out.newLine();

            }

            //3,关闭流

            out.close();

        }

    }

    字符缓冲输入流 BufferedReader

    从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

    l  方法

    public String readLine() 读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

     

    /*

     * BufferedReader 字符缓冲输入流

     *

     * 方法:

     * String readLine()

     * 需求:从文件中读取数据,并显示数据

     */

    public class BufferedReaderDemo {

        public static void main(String[] args) throws IOException {

            //1,创建流

            BufferedReader in = new BufferedReader(new FileReader("file.txt"));

            //2,读数据

            //一次一个字符

            //一次一个字符数组

            //一次读取文本中一行的字符串内容

            String line = null;

            while( (line = in.readLine()) != null ){

                System.out.println(line);

            }

           

            //3,关闭流

            in.close();

        }

    }

    使用字符缓冲流完成文本文件的复制

    刚刚我们学习完了缓冲流,现在我们就使用字符缓冲流的特有功能,完成文本文件的复制

     

    /*

     * 采用高效的字符缓冲流,完成文本文件的赋值

     *

     * 数据源: file.txt

     * 目的地: copyFile.txt

     *

     * 分析:

     * 1,指定数据源, 是数据源中读数据,采用输入流

     * 2,指定目的地,是把数据写入目的地,采用输出流

     * 3,读数据

     * 4,写数据

     * 5,关闭流

     */

    public class CopyTextFile {

        public static void main(String[] args) throws IOException {

            //1,指定数据源, 是数据源中读数据,采用输入流

            BufferedReader in = new BufferedReader(new FileReader("file.txt"));

            //2,指定目的地,是把数据写入目的地,采用输出流

            BufferedWriter out = new BufferedWriter(new FileWriter("copyFile.txt"));

            //3,读数据

            String line = null;

            while ( (line = in.readLine()) != null ) {

                //4,写数据

                out.write(line);

                //写入换行符号

                out.newLine();

    ··········out.flush();

            }

            //5,关闭流

            out.close();

            in.close();

        }

    }

  • 相关阅读:
    组合问题的递归实现
    递归解决全排列算法
    字符串专题练习
    Linux系统目录架构
    Linux命令行文本处理工具
    Linux扩展权限
    Linux权限机制
    Linux用户基础
    Linux文件系统挂载管理
    Sensors Grouping Model for Wireless Sensor Network*
  • 原文地址:https://www.cnblogs.com/miaoxingren/p/9521614.html
Copyright © 2020-2023  润新知