InputStreamReader在
字节流和
字符流之间架起了桥梁。能够读取字节数组并使用指定的字符集解码成字符流。
每次调用
InputStreamReader的read方法会从底层字节流读取一个或多个字节。为了确保有效的转换,可能会从底层流中读取更多的字节。
为了提高性能,可以考虑结合
BufferedReader使用:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
public class InputStreamReader extends Reader {
// 流解码类,所有的调用都是交给它完成。
private final StreamDecoder sd;
// 使用默认的字符集名来创建实例
public InputStreamReader(InputStream in) {
super(in);
try {
sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // ## check lock object
} catch (UnsupportedEncodingException e) {
// The default encoding should always be available
throw new Error(e);
}
}
// 根据指定的字符集名来创建实例
public InputStreamReader(InputStream in, String charsetName)
throws UnsupportedEncodingException
{
super(in);
if (charsetName == null)
throw new NullPointerException("charsetName");
sd = StreamDecoder.forInputStreamReader(in, this, charsetName);
}
// 根据指定的字符集来创建实例
public InputStreamReader(InputStream in, Charset cs) {
super(in);
if (cs == null)
throw new NullPointerException("charset");
sd = StreamDecoder.forInputStreamReader(in, this, cs);
}
// 根据指定的字符集解码器来创建实例
public InputStreamReader(InputStream in, CharsetDecoder dec) {
super(in);
if (dec == null)
throw new NullPointerException("charset decoder");
sd = StreamDecoder.forInputStreamReader(in, this, dec);
}
// 获取该流使用的字符编码名
public String getEncoding() {
return sd.getEncoding();
}
// 读取一个字符
public int read() throws IOException {
return sd.read();
}
// 读取一串字符到字符数组中
public int read(char cbuf[], int offset, int length) throws IOException {
return sd.read(cbuf, offset, length);
}
// 查看流是否准备好用于读取。
public boolean ready() throws IOException {
return sd.ready();
}
// 关闭Reader
public void close() throws IOException {
sd.close();
}
}
分享到:
相关推荐
本文通过示例代码给大家解析了Java中的InputStreamReader和OutputStreamWriter知识,需要的的朋友参考下吧
主要介绍了InputStreamReader和BufferedReader用法及实例讲解的相关资料,需要的朋友可以参考下
InputStreamReader的用法---马克-to-win java视频的介绍
StreamDecoder流源码,其中注释均为个人注释,非官方注释 该资源需要自己重写InputStreamReader类,才可以进行debug一步步的测试
本文给大家分享一段示例程序,通过示例代码可以看出FileReader是基于InputStreamReader实现的,FileWriter是基于OutputStreamWriter实现的,具体程序代码大家通过本文了解下吧
* InputStreamReader isr = new InputStreamReader(InputStream in,String * charsetName);//构造一个指定编码集的InputStreamReader类。 * * 参数 in对象通过 InputStream in = System.in;获得。//读取键盘上...
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int f = Integer.parseInt(br.readLine()); double c=5*(f-32); c=c/9; System.out.println("Changing it to Celsius is "+c); } }
doja中文简体中文与繁体中文转换例子(doja2.5开发环境)
主要介绍了InputStreamReader 和FileReader的区别及InputStream和Reader的区别的相关资料,需要的朋友可以参考下
包含Android项目源码,代码带有注释。 例如: * 普通的文本文件读取与写入操作 * 注意,面向字符的, 用Reader/Writer, 面向字节的, InputStream/OutputStream * 面向字符会产生乱码问题, 此时需要采用 ...
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));//打开接受输入流 String str = in.readLine();//输出接受信息 if("ftn".equals(substring(0,3))) { patch1=Integer.parseInt(str....
import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class Client { public static void main (String args[]){ try{ Socket socket =new Socket("127.0.0.1",4703...
new InputStreamReader(clientInput)); // 按行读取输入内容 String strLine = bufReader.readLine(); if ("OVER".equalsIgnoreCase(strLine)) { // 结束输入流 PrintWriter printWriter = new ...
public class Method { private int intinput() throws IOException,NumberFormatException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String str=br.readLine(); int i=Integer...
InputStreamReader isr=new InputStreamReader(socekt.getInputStream()); BufferedReader br=new BufferedReader(isr); pw=new PrintWriter(socekt.getOutputStream(),true); while(true){ String message=br....
import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.InetAddress;import java.net.Socket;public class SimpleHttpClientUsingSocket {public static void main(String[] args) {String ...
分析Java常用IO流,包括InputStream、OutputStream、FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、Reader、Writer、InputStreamReader、OutputStreamWriter、FileReader、...
当你还是一个java初学者的时候,是不是还在为你没有一个好的源代码模仿去学习而烦恼,这个代码很容易看懂,对你学习很有帮助
适配器模式在源码中的应用: (1)JDK源码的IO模块用到,例如 java.io.InputStreamReader(InputStream)、java.io.OutputStreamWriter(OutputStream)。 (2)mybatis源码日志模块用到对象适配器模式。
蓝桥杯十六进制转八进制源码 要转换的十六进制正整数,每个十六进制数长度不超过100000 1.思路:16进制转2进制,再转8进制,我先转的10进制,数据小还 行,数据大了就game over了。(本题数据最大为10万位) 2.判断...