zoukankan      html  css  js  c++  java
  • java_缓冲流

    缓冲流一共分为四种:字节缓冲输入(输出)流,字符缓冲输入(输出)流;
    1- 字节缓冲输出流BufferedOutputStream
    继承结构:
    构造方法:        
    代码演示:
    /*
         * 写数据到文件的方法
         * 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();
             }
    2  - 字节缓冲输入流 BufferedInputStream
    继承结构:
    构造函数:
    代码演示:
     
    /*
         * 从文件中读取数据
         * 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();
        }
     
      3- 字符缓冲输出流 BufferedWriter
     
    /*
     * 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();
        }
    }
      4- 字符缓冲输入流 BufferedReader
     
    /*
     * 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();
        }
    }
    5- 流的操作规律
     
    IO流中对象很多,解决问题(处理设备上的数据时)到底该用哪个对象呢?
    把IO流进行了规律的总结(四个明确):
    - 明确一:要操作的数据是数据源还是数据目的。
      源:InputStream Reader
      目的:OutputStream Writer
    先根据需求明确要读,还是要写。
     
    - 明确二:要操作的数据是字节还是文本呢?
      源:
      字节:InputStream
      文本:Reader
      目的:
      字节:OutputStream
      文本:Writer
    已经明确到了具体的体系上。
     
    - 明确三:明确数据所在的具体设备。
      源设备:
      硬盘:文件 File开头。
      内存:数组,字符串。
      键盘:System.in;
      网络:Socket
      目的设备:
      硬盘:文件 File开头。
      内存:数组,字符串。
      屏幕:System.out
      网络:Socket
    完全可以明确具体要使用哪个流对象。
     
    - 明确四:是否需要额外功能呢?
      额外功能:
      转换吗?转换流。InputStreamReader OutputStreamWriter
      高效吗?缓冲区对象。BufferedXXX
     
    6- 总结
     
      - 知识点总结
     
    - 字节流
      - 字节输入流 InputStream
      - FileInputStream 操作文件的字节输入流
      - BufferedInputStream高效的字节输入流
      - 字节输出流 OutputStream
      - FileOutputStream 操作文件的字节输出流
      - BufferedOutputStream 高效的字节输出流
    - 字符流
      - 字符输入流 Reader
      - FileReader 操作文件的字符输入流
      - BufferedReader 高效的字符输入流
      - InputStreamReader 输入操作的转换流(把字节流封装成字符流)
      - 字符输出流 Writer
      - FileWriter 操作文件的字符输出流
      - BufferedWriter 高效的字符输出流
      - OutputStreamWriter 输出操作的转换流(把字节流封装成字符流)
     
    - 方法:
      - 读数据方法:
      - read() 一次读一个字节或字符的方法
      - read(byte[] char[]) 一次读一个数组数据的方法
      - readLine() 一次读一行字符串的方法(BufferedReader类特有方法)
      - readObject() 从流中读取对象(ObjectInputStream特有方法)
      - 写数据方法:
      - write(int) 一次写一个字节或字符到文件中
      - write(byte[] char[]) 一次写一个数组数据到文件中
      - write(String) 一次写一个字符串内容到文件中
      - writeObject(Object ) 写对象到流中(ObjectOutputStream类特有方法)
      - newLine() 写一个换行符号(BufferedWriter类特有方法)
     
    - 向文件中写入数据的过程
    1,创建输出流对象
    2,写数据到文件
    3,关闭输出流
    - 从文件中读数据的过程
    - 创建输入流对象
    - 从文件中读数据
    - 关闭输入流
     
    - 文件复制的过程
    - 创建输入流(数据源)
    - 创建输出流(目的地)
    - 从输入流中读数据
    - 通过输出流,把数据写入目的地
    - 关闭流
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    语文作业
    在Windows下为PHP5.5安装redis扩展
    PHP安全处理之Mcrypt使用总结
    CSS3 动画
    微信开发--获取用户openID
    微信公众号开发--获取用户信息
    php 中gd库的安装
    随机输入几个数,输出重复的数字和重复的次数
    永久解决"Error:java: 错误: 不支持发行版本 12"的问题
    报"java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing"的原因和如何处理
  • 原文地址:https://www.cnblogs.com/anzhi/p/7443687.html
Copyright © 2011-2022 走看看