InputStreamReader类是从字节流到字符流的桥接器,它使用指定的字符集读取字节并将它们解码为字符。每次调用一个InputStreamReader的read()方法都可能导致从底层字节输入流中读取一个或多个字节。
为了实现字节到字符的有效转换,可以从基础流中提取比满足当前读取操作所需的更多字节。为了获得最高效率,请考虑在BufferedReader中包装InputStreamReader。
InputStreamReader(InputStream in)
使用默认的字符集构造InputStreamReader流。
InputStreamReader(InputStream in, Charset cs)
使用给定的字符集构造InputStreamReader流。
InputStreamReader(InputStream in, CharsetDecoder dec)
使用给定的字符解码器构造InputStreamReader流。
InputStreamReader(InputStream in, String charsetName)
使用给定名字的字符集构造InputStreamReader流。
void close()
关闭InputStreamReader流。
String getEncoding()
获取字符的编码方式。
int read()
读取单个字符。
int read(char[] cbuf, int offset, int length)
读取指定长度的字符到字符数组中。
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
public class Test2 {
public static void main(String[] args) throws IOException {
// 创建一个InputStreamReader
InputStreamReader inputStreamReader = new InputStreamReader(System.in);
// 读取一个字符
char c = (char)inputStreamReader.read();
// 创建一个打印流
PrintStream printStream = new PrintStream(System.out);
// 输出到控制台
printStream.println(c);
inputStreamReader.close();
}
}
OutputStreamWriter是从字符流到字节流的桥接:使用指定的字符集将写入其中的字符编码为字节。它使用的字符集可以通过名称指定,也可以明确指定,或者可以接受平台的默认字符集。
OutputStreamWriter中存在一个字节缓冲区,用于存储每次输出的字符编码后的字节,然后待字符输出流输出完毕一次性的将存储的字节全部输出给底层的字节输出流。
为了获得最高效率,请考虑在BufferedWriter中包装OutputStreamWriter,以避免频繁的转换器调用。
OutputStreamWriter(OutputStream out)
使用默认的字符集构造OutputStreamWriter流。
OutputStreamWriter(OutputStream out, Charset cs)
使用指定的字符集构造OutputStreamWriter流。
OutputStreamWriter(OutputStream out, CharsetEncoder enc)
使用指定的字符集编码器构造OutputStreamWriter流。
OutputStreamWriter(OutputStream out, String charsetName)
使用指定名称的字符集构造OutputStreamWriter流。
void close()
关闭OutputStreamWriter流。在关闭OutputStreamWriter流之前需要清空流中的内容。
void flush()
清空OutputStreamWriter流。
String getEncoding()
获取字符的编码方式。
void write(char[] cbuf, int off, int len)
向流中写入字符数组的全部或者一部分内容。
void write(int c)
向流中写入一个字符。
void write(String str, int off, int len)
向流中写入一个字符串。
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Test {
public static void main(String[] args) throws IOException {
InputStreamReader inputStreamReader = new InputStreamReader(System.in);
char c = (char)inputStreamReader.read();
// 创建一个OutputStreamWriter流
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(System.out);
// 写入一个字节
outputStreamWriter.write(c);
// 关闭流
outputStreamWriter.close();
inputStreamReader.close();
}
}
输入:
abcde
输出:
a