当前位置: 技术问答>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 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()));
在使用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()));
我想就可以了。
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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。