博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
毕向东_Java基础视频教程第19天_IO流(15~17)
阅读量:6831 次
发布时间:2019-06-26

本文共 3202 字,大约阅读时间需要 10 分钟。

第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;/*字符流FileReaderFileWriterBufferedReaderBufferedWriter字节流FileInputStreamFileOutputStreamBufferedInputStreamBufferedOutputStream*/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 == '\r') continue;            if (ch == '\n') {                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();    }}

 

转载于:https://www.cnblogs.com/echo1937/p/6353845.html

你可能感兴趣的文章
Powershell管理系列(二十六)PowerShell操作之批量导出&导入邮箱
查看>>
K8S网络NAT问题分析与处理
查看>>
XStream处理重复的或循环引用
查看>>
对某机构为“转移内部矛盾”而嫁祸于我们的事件之真相大起底
查看>>
Exchange管理控制台无法安装,要求重新启动
查看>>
【案例分享】电力设备生产数据的多层分组统计报表实现
查看>>
Windows 7下安装Cygwin亲历烦恼记录
查看>>
4G时代,语音社交APP或成智能手表的杀手级应用
查看>>
年入十万靠努力,年入百万靠能力,年入千万靠什么
查看>>
【免费下载】《这样理解知识管理》电子书,2016学会知识管理
查看>>
轻量级的Web服务器Nginx0.9.0 开发版发布
查看>>
听到两个程序员聊天——A:“借我1K块。”
查看>>
Oracle ROWID
查看>>
重构可让SQL提高可维护性,可读性以及效能性
查看>>
java多线程例子
查看>>
fabric自动部署
查看>>
linux 命令小抄
查看>>
前端必读:浏览器内部工作原理
查看>>
C Socket Programming for Linux with a Server and Client Example Code
查看>>
6天通吃树结构—— 第一天 二叉查找树
查看>>