往期精选
速看全面Zookeeper面试题及答案整理总结(最新2020年版)
速看全面MyBatis面试题及答案整理总结(最新2020年版)
速看全面Redis面试题及答案整理总结(最新2020年版)
超级全面的总结MySQL数据库优化面试题分析(最新2020年版)
经典面试:Spring Boot中的条件注解底层是如何实现的?
击上方蓝色“Java精选”,选择“设为星标”
技术文章第一时间送达!
作者:Nuttyhttp://www.cnblogs.com/ygj0930/p/5827509.html
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
public class OutputStreamWriter extends Writer {
// 流编码类,所有操作都交给它完成。
private final StreamEncoder se;
// 创建使用指定字符的OutputStreamWriter。
public OutputStreamWriter(OutputStream out, String charsetName)
throws UnsupportedEncodingException
{
super(out);
if (charsetName == null)
throw new NullPointerException("charsetName");
se = StreamEncoder.forOutputStreamWriter(out, this, charsetName);
}
// 创建使用默认字符的OutputStreamWriter。
public OutputStreamWriter(OutputStream out) {
super(out);
try {
se = StreamEncoder.forOutputStreamWriter(out, this, (String)null);
} catch (UnsupportedEncodingException e) {
throw new Error(e);
}
}
// 创建使用指定字符集的OutputStreamWriter。
public OutputStreamWriter(OutputStream out, Charset cs) {
super(out);
if (cs == null)
throw new NullPointerException("charset");
se = StreamEncoder.forOutputStreamWriter(out, this, cs);
}
// 创建使用指定字符集编码器的OutputStreamWriter。
public OutputStreamWriter(OutputStream out, CharsetEncoder enc) {
super(out);
if (enc == null)
throw new NullPointerException("charset encoder");
se = StreamEncoder.forOutputStreamWriter(out, this, enc);
}
// 返回该流使用的字符编码名。如果流已经关闭,则此方法可能返回 null。
public String getEncoding() {
return se.getEncoding();
}
// 刷新输出缓冲区到底层字节流,而不刷新字节流本身。该方法可以被PrintStream调用。
void flushBuffer() throws IOException {
se.flushBuffer();
}
// 写入单个字符
public void write(int c) throws IOException {
se.write(c);
}
// 写入字符数组的一部分
public void write(char cbuf[], int off, int len) throws IOException {
se.write(cbuf, off, len);
}
// 写入字符串的一部分
public void write(String str, int off, int len) throws IOException {
se.write(str, off, len);
}
// 刷新该流。可以发现,刷新缓冲区其实是通过流编码类的flush()实现的,故可以看出,缓冲区是流编码类自带的而不是OutputStreamWriter实现的。
public void flush() throws IOException {
se.flush();
}
// 关闭该流。
public void close() throws IOException {
se.close();
}
}
//写入字符数组的某一部分。
void write(char[] cbuf, int off, int len)
//写入单个字符。
void write(int c)
//写入字符串的某一部分。
void write(String s, int off, int len)
加入专业技术讨论QQ群:248148860 ^^
往期精选
速看全面Zookeeper面试题及答案整理总结(最新2020年版)
速看全面MyBatis面试题及答案整理总结(最新2020年版)
速看全面Redis面试题及答案整理总结(最新2020年版)
超级全面的总结MySQL数据库优化面试题分析(最新2020年版)
经典面试:Spring Boot中的条件注解底层是如何实现的?