• 06 IO流 03带有缓冲区的包装流 + 包装流和节点流 + 数据流 + 标准输出流


    1、带有缓冲区的包装流

      /*
      * BufferedReader:
      *     带有缓冲区的字符输入流
      *     使用这个流的时候不需要自定义char数组,或者说不需要自定义byte数组,自带缓冲
      *
      *
      * */
    
            FileReader reader = null;
            try {
                reader = new FileReader("world.txt");
                //当一个流的构造方法中需要一个流的时候,这个被传进来的流叫做:节点流
                //外部负责包装的这个流,叫做包装流,还有一个名字叫做:处理流
                //像当前这个程序来说:FileReader就是一个节点流,BufferedRead就是包装流(处理流)
                BufferedReader br = new BufferedReader(reader);
    
                //读一行
                String firstLine = br.readLine();
                System.out.println(firstLine);
    
                //读一行
                String secondLine = br.readLine();
                System.out.println(secondLine);
                
                //readLine读取一个文本行,但是不带换行符
                String s = null;
                while((s = br.readLine()) != null){
                    System.out.println(s);
                }
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                // 指需要关闭包装流,不需要关闭节点流
                if(reader != null){
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

    2、包装流和节点流

     /*
            * 转换流:InputStreamReader
            * */
            //字节流
            FileInputStream in = new FileInputStream("world.txt");
            
            //通过转换流转换(InputStreamReader  将字节流转换成字符流
            InputStreamReader reader  = new InputStreamReader(in);
            
            //这个构造方法只能传一个字符流,不能传字节流
            //reader是节点流,br是包装流
            BufferedReader br = new BufferedReader(reader);
            
            //合并
            BufferedReader ttbr = new BufferedReader(new InputStreamReader(new FileInputStream("world.txt")));
            
     /*
           * BufferedWriter:带有缓冲的字符输出流
           * */
            //  BufferedWriter out = new BufferedWriter(new FileWriter("copy001"));
            BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("copy001",true)));
            out.write("hello world");
            out.write("\n");
            out.write("hello kitty");
            //刷新
            out.flush();
            //关闭最外层
            out.close();

    3、数据流

     /*
          * java.io.DataOutputStream  :数据专属流
          * 这个流可以将数据连通数据的类型一并写入文件
          * 注意:这个文件不是普通文本文档(这个文件用记事本不能打开)
          *
          *
          * */
            //创建数据专属的字节输出流
            DataOutputStream dos = new DataOutputStream(new FileOutputStream("data"));
    
    
    
            //把数据以及数据的类型一并写入文件
            byte a = 100;
            short b = 200;
            int c = 300;
            float d = (float)400.5;
            double e = 500.1;
            char f = '我';
    
            //
            dos.writeByte(a);
            dos.writeShort(b);
            dos.writeInt(c);
            dos.writeFloat(d);
            dos.writeDouble(e);
            dos.writeChar(f);
    
            //刷新
            dos.flush();
            //关闭最外层
            dos.close();
    
            /*
            * DataInputStream :数据字节输入流
            * DataOutputStream写的文件,只能使用DataInputStream去读,并且读的时候需要提前知道写入的顺序
            * 读的顺序和写的顺序一样,才能正常取出数据
            *
            * */
            DataInputStream dis = new DataInputStream(new FileInputStream("data"));
            byte a1 = dis.readByte();
            short a2 = dis.readShort();
            int a3 = dis.readInt();
            float a4 = dis.readFloat();
            double a5 = dis.readDouble();
            char a6 = dis.readChar();
    
            System.out.println(a1);
            System.out.println(a2);
            System.out.println(a3);
            System.out.println(a4);
            System.out.println(a5);
            System.out.println(a6);

    4、标准输出流

    /*
            * java.io.PrintStream   标准的字节输出流,默认输出到控制台
            *
            *
            * */
            //联合起来写
            System.out.println("hello world");
            //分开写
            PrintStream ps = System.out;
            ps.println("hello zhangshan");
            ps.println("hello lisi");
            ps.println("hello wangwu");
    
            //标准输出流不需要手动close()关闭
            //可以改变标准输出流的输出方向吗? 可以
          /* System.gc();
           System.currentTimeMillis();
           PrintStream ps1 = System.out;
           System.exit(0);
           System.arraycopy(...);*/
    
            // 标准输出流不再指向控制台,指向“log"文件
            PrintStream printStream = new PrintStream(new FileOutputStream("log"));
            //  修改输出方向,将输出方向修改到"log"文件
            System.setOut(printStream);
            //再输出
            System.out.println("hello world");
            System.out.println("hello kiite");
            System.out.println("hello zhangshan");
  • 相关阅读:
    敏捷的调试
    敏捷的编码
    敏捷的需求分析
    敏捷的反馈
    敏捷的方法论
    敏捷的世界观
    MarkDown添加数学公式
    性能分析初学者指南
    可执行文件的装载与进程
    会话技术------客户端技术cookie
  • 原文地址:https://www.cnblogs.com/xiaoming521/p/15844999.html
Copyright © 2020-2023  润新知