IO流的基本流情况:
字符流:                字符流缓冲区:
FileReader              BufferedReader
FileWriter               BufferedWriter
 
字节流:                字节流缓冲区:
FileInputStream       BufferedInputStream
FileOutputStream     BufferedOutputStream
 
在ReadInDemo.java中通过键盘录入一行的数据并打印其大写,发现其实就是读一行数据的原理。
也就是readLine方法。
能不能直接使用readLine方法来完成键盘录入的一行数据的读取呢?
 
readLine方法是字符流BufferedReader的方法
而键盘录入的read方法是字节流BufferInputStream的方法
 
那么能不能将字节流转换为字符流,再使用字符流缓冲区的readLine方法呢?
----------------------------------------------------------------------------------------------
(1)类InputStreamReader:是字节流通向字符流的桥梁
     InputStream in = System.in
     InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。
          
(2)类OutputStreamWriter:是字符流通向字节流的桥梁
    OutputStream out = System.out
    OutputStreamWriter(OutputStream out) 创建使用默认字符编码的 OutputStreamWriter。
 
//例子1:      
需求:通过键盘录入数据,当录入一行数据后,将就改行数据进行打印,
如果录入的数据是over,那么停止录入
import java.io.*;
class TransStreamDemo
{
public static void main(String[] args)throws IOException
{
/*
//从键盘录入数据
InputStream in = System.in; //将字节流对象转换为字符流对象,使用转换流,InputStreanReader
InputStreamReader isr = new InputStreamReader(in); //为了提高效率,将字符串进行高效技术操作,即创建字符流缓冲区流对象
BufferedReader bufr = new BufferedReader(isr);
*/ //上面三个句子简写成:键盘录入最常见写法
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); // OutputStream out = System.out;
// OutputStreamWriter osr = new OutputStreamWriter(out);
// BufferedWriter bufw = new BufferedWriter(osr); //上面三个句子简写成:
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(); /*
String line = null;
while((line = bufr.readLine())!=null)
{
if("over".equals(line))
break;
System.out.println(line.toString());
}
buf.close();
*/
}
}
 
改变标准输入输出设备。
在System类中:
static void setIn(InputStream in) 
          重新分配“标准”输入流。 
static void setOut(PrintStream out) 
          重新分配“标准”输出流。 
//例子2:
import java.io.*;
class TransStreamDemo2
{
public static void main(String[] args)throws IOException
{
//System.setIn(new FileInputStream("ReadInDemo.java"));//修改读取源
//System.setOut(new PrintStream("f:\\myfile\\trans.txt"));//修改打印目的地 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//从键盘读入
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();
}
}

Java:IO流之转换流的更多相关文章

  1. Java——IO类,转换流简化写法

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  2. Java - io输入输出流 --转换流

    转换流  转换输出流 OutputStreamWriter: 说明: /* * OutputStreamWriter 这个类的作用 * 就是指定输出流的编码格式 * 这个类的构造方法 需要传递 一个输 ...

  3. Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Properties集合、打印流)

    1.IO简介 IO(输入输出)通过java.io包下的类和接口来支持,包下包括输入.输出两种IO流,每种输入输出流又可分为字符流和字节流两大类. 2.File类 File类是io包下与平台无关的文件和 ...

  4. Java IO流之转换流

    一.转换流 1.在IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换流 2.转换流用于在字节流和字符流之间转换 3.转换流本身是字符流 二.两种转换流 Ou ...

  5. java ->IO流_转换流

    转换流 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者OutputStre ...

  6. 我爱Java系列之《JavaEE学习笔记day12》---【缓冲流、转换流、序列/反序列化流、打印流】

    [缓冲流.转换流.序列/反序列化流.打印流] 一.缓冲流 1.字节缓冲输出流 java.io.BufferedOutputStream extends OutputStream 高效字节输出流 写入文 ...

  7. Java第三阶段学习(三、字符流、转换流)

    一.字节流读取中文时出现的问题: 文件中有中文时,用字节流读取会出现乱码的问题,因为一个中文为两个字节. 二.字符编码表 编码表:其实就是生活中字符和计算机二进制的对应关系表. 1.ascii: 一个 ...

  8. 01 语言基础+高级:1-8 File类与IO流_day10【缓冲流、转换流、序列化流】

    day10[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能 ...

  9. JAVASE(十六) IO流 :File类、节点流、缓冲流、转换流、编码集、对象流

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.File类型 1.1.File类的理解 File类是在java.io包下 File可以理解成一个文件 ...

  10. IO流之转换流

    转换流 OutputStreamWriter类 查阅OutputStreamWriter的API介绍,OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流 ...

随机推荐

  1. 高效线程池(threadpool)的实现

    高效线程池(threadpool)的实现 Nodejs编程是全异步的,这就意味着我们不必每次都阻塞等待该次操作的结果,而事件完成(就绪)时会主动回调通知我们.在网络编程中,一般都是基于Reactor线 ...

  2. React + Reflux

    React + Reflux 渲染性能优化原理   作者:ManfredHu 链接:http://www.manfredhu.com/2016/11/08/23-reactRenderingPrinc ...

  3. Careercup - Microsoft面试题 - 5943729928011776

    2014-05-10 21:56 题目链接 原题: Suppose you get number of unique users every second from bing For eg, ,,,, ...

  4. Cash flow

    Today,we learn about the cash flow. Cash flow summary: 1.The cash flow identity:(现金恒等式) cash flow fr ...

  5. 关于Python中的yield

    关于Python中的yield   在介绍yield前有必要先说明下Python中的迭代器(iterator)和生成器(constructor). 一.迭代器(iterator) 在Python中,f ...

  6. 深入分析windows下配置wamp环境各模块的版本兼容性

    版本相关概念说明: ts/nts: thread safety 线程安全 TS refers to multithread capable builds. NTS refers to single t ...

  7. 浅谈对git的认识

    在上大二之前我根本不知道git是什么,根本不知道它有什么功能,以及应用于那个领域,那天老师说让我们了解一些它,并对其进行一下学习.我瞬间就蒙了,但是我并没有把其抛在脑后,而是通过在其它方式,对其进行了 ...

  8. 第五周&第六周

    学习进度表  周数 专业学习目标 学习时间 新增代码行 博客发表量 人文方面学习 知识总结 第四周 认真掌握老师上课所讲的内容,在课外多学习一些知识    5小时 50          1   阅读 ...

  9. PowerDesigner使用技巧

    1.PowerDesigner 批量修改索引或主键对应的表空间 http://blog.sina.com.cn/s/blog_701218960100l0h4.html   2.去掉Oracle生成的 ...

  10. maven插件:tomcat插件和jetty插件的区别

    在程序是多模块结构的时候,使用tomcat的maven插件和jetty的maven插件有细微差别: 1.tomcat7-maven-plugin   可以直接在parent的邮件直接运行:tomcat ...