• 毕向东_Java基础视频教程第19天_IO流(15~17)


    第19天-15-IO流(读取键盘录入)

    InputStreamReader是字节流通向字符流的桥梁,它使用指定的charset读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。每次调用InputStreamReader中的一个read()方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。

    为了达到最高效率,可考虑使用BufferedReader:BufferedReader in = new BufferedReader(new InputStreamReader(System.in))

    OutputStreamWriter是字符流通向字节流的桥梁,它使用指定的charset把将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。每次调用write()方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累计。可以指定此缓冲区的大小,不过默认的缓冲区对多数用途来说已经足够大。注意:传递给write()方法的字符没有缓冲。

    为了获得最高效率,可考虑使用BufferedWriter以避免频繁调用转换器:BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

    第19天-16-IO流(读取转换流)

    package bxd;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    /*
    字符流
    FileReader
    FileWriter
    
    BufferedReader
    BufferedWriter
    
    字节流
    FileInputStream
    FileOutputStream
    
    BufferedInputStream
    BufferedOutputStream
    */
    public class TransStreamDemo {
        public static void main(String[] args) throws IOException {
            method();
            anotherMethod();
        }
    
        //使用readLine方法来实现: readLine()是字符流BufferedReader的方法, 而System.in的read()是字节流InputStream的方法
        public static void method() throws IOException {
            InputStream in = System.in;
            InputStreamReader inr = new InputStreamReader(in);
            BufferedReader bufr = new BufferedReader(inr);
    
            String line = null;
            while ((line = bufr.readLine()) != null) {
                if ("over".equals(line)) break;
                System.out.println(line.toUpperCase());
            }
            bufr.close();
        }
    
        //通过键盘录入数据. 当录入一行数据后, 就将该行数据进行打印; 当录入的数据是over, 那么停止录入.
        //System.in: 对应的是标准输入设备, 键盘; System.out: 对应的是标准输出设备, 控制台
        public static void anotherMethod() throws IOException {
            InputStream in = System.in;
            StringBuilder sb = new StringBuilder();
            while (true) {
                int ch = in.read();
                if (ch == '
    ') continue;
                if (ch == '
    ') {
                    String s = sb.toString();
                    if ("over".equals(s)) break;
                    System.out.println(s.toUpperCase());
                    sb.delete(0, sb.length());
                } else sb.append((char) ch);
            }
        }
    
    }

    第19天-17-IO流(写入转换流)

    package bxd;
    
    import java.io.*;
    
    public class TransStreamDemo {
    
        public static void main(String[] args) throws IOException {
            // 获取键盘录入对象; 使用InputStreamReader将字节流对象转化为字符流对象; 使用BufferedReader以实现高效操作.
            // InputStream in = System.in;
            // InputStreamReader inr = new InputStreamReader(in);
            // BufferedReader bufr = new BufferedReader(inr);
            BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
    
            // OutputStream out = System.out;
            // OutputStreamWriter ows = new OutputStreamWriter(out);
            // BufferedWriter bufw = new BufferedWriter(ows);
            BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
    
            String line = null;
            while ((line = bufr.readLine()) != null) {
                if ("over".equals(line)) break;
                bufw.write(line.toUpperCase());
                bufw.newLine();
                bufw.flush();
            }
            bufr.close();
            bufw.close();
        }
    }
  • 相关阅读:
    Python 之nmap模块问题解决
    phpstudy --mysql支持外联。
    Kali 更新
    Win 10 访问IPV6地址 问题。
    Macbookpro 使用Parallels Deskop安装kali Parallels Tools
    Windows 转 Mac 利用git继续管理github
    shell脚本移植问题(windwos移植到linux)
    APP测试项总结
    apktool 反编译
    微信小程序-服务器返回数据中包含有 换行符失效问题解决方案
  • 原文地址:https://www.cnblogs.com/echo1937/p/6353845.html
Copyright © 2020-2023  润新知