黑马程序员技术交流社区
标题:
写入转换流,错一行代码,变成奇葩...求解释`~~
[打印本页]
作者:
wahaha
时间:
2013-3-13 00:45
标题:
写入转换流,错一行代码,变成奇葩...求解释`~~
本帖最后由 夏添 于 2013-3-13 08:43 编辑
问题描述在代码的最下面的注释部分,,真心求解释哇!!!查了好些资料...都不能理解...现在头都大了...
public class Test6
{
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);//定义写入流转换
BufferedWriter bufw = new BufferedWriter(osw);
String line = null;
while((line = bufr.readLine())!=null)
{
if (line.equals("over"))
break;
// 输出到控制台上
osw.write(line.toUpperCase());//--->>就是这里,错写成了osw.导致打印结果没有回车,
老毕的视频中讲解是bufwwrite(line.toUpperCase()),用缓冲区来驱动输出,
但问题是,这样写为什么不行呢?结果不都是操作out么??
bufw.newLine();
bufw.flush();
}
}
作者:
李阳
时间:
2013-3-13 01:20
while((line = bufr.readLine())!=null)
{
if (line.equals("over"))
break;
osw.write(line.toUpperCase());
// bufw.write(line.toUpperCase());
bufw.newLine();
osw.flush();//这里是错误的地方。你源代码使用的是osw流,但是没对它刷新,也没有关闭它,肯定不会有显示了。楼组大意了。
作者:
wahaha
时间:
2013-3-13 07:28
李阳 发表于 2013-3-13 01:20
while((line = bufr.readLine())!=null)
{
if (line.equals("over"))
我早上起来又试了试,
我代码那样写没问题的
总结:输出的时候,用字节转换流驱动也行,就是说,建立的字符缓冲可以不用,当然了建立字符缓冲对象的作用,可以理解为就为了用那个newLine();
刷新的时候,刷新字节转换流也行,刷新缓冲液行,我的理解是,无论怎么输出,其实都是在调用底层的字节写出的write方法,最后都是先写到内存的缓冲区,
谢谢!!!求指正批评~~~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2