当前位置:  技术问答>java相关

关于两个类的迷惑:StringReader 和 StringBufferInputStream

    来源: 互联网  发布时间:2015-02-09

    本文导语:  我有这样一个代码: BufferedReader in = new BufferedReader(new InputStreamReader(new StringBufferInputStream(ivjMessage.getText()))); 这个编译并没有什么错误,但编译器告诉我:“推荐不要使用这个类”,我用的是VISUAL AGE,由于StringB...

我有这样一个代码:

BufferedReader in = new BufferedReader(new InputStreamReader(new StringBufferInputStream(ivjMessage.getText())));

这个编译并没有什么错误,但编译器告诉我:“推荐不要使用这个类”,我用的是VISUAL AGE,由于StringBufferInputStream这个类是JDK1.0里的,所以不推荐使用。

然后我查到,在新的JDK中应使用StringReader,于是我写了下面的代码:

BufferedReader in = new BufferedReader(new InputStreamReader(new StringReader(ivjMessage.getText())));

结果编译出错:用自变量 (java.io.StringReader) 调用的用来创建 java.io.InputStreamReader 的构造器未定义

也就是说用StringReader创建的STREAM不能用来构建一个InputStreamReader,是这样吗??

高手,请告诉我,我该如何解决这一问题呢??既没有编译错误,又不使用旧的JDK类呢?

多谢了!!!!!


|
BufferedReader需要一个普通的Reader作为构造函数的参数。
在使用StringInputStream的情况下,StringInputStream不是一个Reader,所以不能直接给BufferedReader作构造函数的参数,需要加一层适配变成InputStreamReader。
而StringReader已经是一个Reader了,加一个InputStreamReader就是画蛇添足了。
所以应该是
BufferedReader in = new BufferedReader(new StringReader(ivjMessage.getText()));



|
因为
InputStreamReader的构造函数原型是:
InputStreamReader(InputStream in) ;
但StringReader:
java.lang.Object
  |
  +--java.io.Reader
        |
        +--java.io.StringReader
所以不能用StringReader构造InputStreamReader。
但BufferedReader(Reader in) ;
所以你可以直接用StringReader构造BufferedReader。
即BufferedReader in = new BufferedReader(new StringReader(ivjMessage.getText()));
我想就可以了。


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ MultiMaps 成员 swap():交换两个multimaps
  • 急!有两个char buf[]里面是两个日期(2004-08-02),怎样判断两个日期之间的天数?(只能用标准C)
  • C++ Lists(链表) 成员 merge():合并两个list
  • 一个Statement不能同时打开两个ResultSet?为了同时打开两个,可以考虑建立两个Statement?甚至两个Connection?
  • C++ Lists(链表) 成员 swap():交换两个list
  • Keepalived 能配两个虚拟ip吗,匹配两个数据库实例?
  • C++ Maps 成员 swap():交换两个map
  • 可以有其他两个类的实例同时调用一个java实例的两个方法吗?
  • C++ Vectors 成员 swap():交换两个Vector
  • 两个域名,两个端口,一个服务器……
  • C++ Lists(链表) 成员 splice():合并两个list
  • 你们看是不是可以这样理解:在用来进行两个对象的比较时,==操作符用来比较两个对象的引用地址,而equals()用来比较两个对象的值。
  • C++ Strings(字符串) 成员 swap():交换两个字符串的内容
  • 下载了jbuilder5,是rar格式的,解开后有两个文件,一个是rsc-jb5.bin,一个是rsc-jb5.cue,据说这两个文件是刻光盘的,请问谁知道怎么刻?不会用这两个文件直接安装吧?谢谢!
  • C++ Strings(字符串) 成员 compare():比较两个字符串
  • 基础问题,刚学的!请教,两个日期格式变量,我要求两个日期之间的天数,怎么求?
  • cocos2d中CCSpriteFrameCache文件同时存在两个plist的问题解决
  • 主进程有两个线程,fork子进程后复制主进程两个线程的内存么?
  • 我机器上安装了linux和win2000两个系统,请问如何在两个系统之间切换。
  • linux字符模式下怎样可以运行两个任务(开两个终端)
  • 听说,初学JAVA有两个开源程序是必看的,请问是哪两个。在那里下载?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3