java中的Adapter模式: 把一个接口或是类变成另外一种。
java.util.Arrays#asList()
javax.swing.JTable(TableModel)
java.io.InputStreamReader(InputStream)
java.io.OutputStreamWriter(OutputStream)
javax.xml.bind.annotation.adapters.XmlAdapter#marshal()
javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal()
查看InputStreamReader的api说明如下:
InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
类InputStreamReader
public class InputStreamReaderextends Reader{//构造函数
InputStreamReader(InputStream in)
InputStreamReader(InputStream in, Charset cs)
InputStreamReader(InputStream in, CharsetDecoder dec)
InputStreamReader(InputStream in, String charsetName)
//方法
void close()
String getEncoding()
int read()
int read(char[] cbuf, int offset, int length)
boolean ready()
}
类FilterInputStream
public class FilterInputStream extends InputStream{
//构造函数
protected FilterInputStream(InputStream in)
//方法
...
...
...
}
//使用Adapter转换
InputStreamReader streamReader = new InputStreamReader(new FileInputStream(file), "utf-8");
BufferedReader bfr=new BufferedReader(streamReader);