A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public static void main(String[] args) throws IOException
{
  InputStream in = System.in;
  InputStreamReader isr = new InputStreamReader(in);
  BufferedReader bufr = new BufferedReader(isr);
  OutputStream out = System.out;
  OutputStreamWriter osw = new OutputStreamWriter(out);//OutputStreamWriter 不是字符流通往字节流的桥梁吗 为什么还是关联的字节流呢?
  BufferedWriter bufw = new BufferedWriter(osw);

  String line = null;
  while((line=bufr.readLine())!=null)
  {
   if("over".equals(line))
    break;
   bufw.write(line.toUpperCase());
   bufw.newLine();
   bufw.flush();
  }
  bufr.close();
}

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
哥们,你问的问题有点模糊,但是我也能明白你问什么。理解新手!
双胞胎:InputStreamReader和OutputStreamWriter用于字节数据到字符数据之间的转换。

InputStreamReader需要和InputStream套接

OutputStreamWriter需要和OutputStream套接

因为字符流的底层就是字节流。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
可使用指定的 charset 将要写入流中的字符编码成字节。
它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。
在写入底层输出流之前,得到的这些字节将在缓冲区中累积。
为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中,以避免频繁调用转换器。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
兄弟,其实就是把字节流转换为字符流的类,其他的都都是。。。不说了
回复 使用道具 举报
你也说了OutputStreamWriter 是字符流通往字节流的桥梁,桥梁就是桥梁,不是桥的两端
通俗一点讲,它就是把字节流转换成字符流
既然他是桥梁,转换字节流的,那你是不是要给他一个字节流,它才能转换啊
你不给他他可不知道怎么转换
回复 使用道具 举报
用大白话可能更容易理解。
InputStreamReader和OutputStreamReader,都叫字符转化流。可以指定字符的编码
InputStreamReader输入流转化,即将从源输入的字节流转换成字符流,所以接收的是Inputstream对象
OutputStreamWriter输出流,即将源输入的字符流转换成字节流。最终以字节流的形式输出,那么接收的对象依然还是字节流OutputStream。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马