20230517 java.io.Writer
介绍
-
java.io.Writer
-
public abstract class Writer implements Appendable, Closeable, Flushable
-
用于写入字符流的抽象类
-
只有一个抽象方法需要子类实现:
public abstract void write(char cbuf[], int off, int len) throws IOException;
-
字符流相对字节流并不是对等的,字符流的底层是字节流
-
在子类设计中装饰器模式非常常见,
FilterWriter
类是实现装饰器模式的关键类,但是没有几个Writer
子类实现FilterWriter
public abstract class FilterWriter extends Writer { protected Writer out; }
-
Writer
的几个实现类都值得了解- 装饰器模式,内部有一个
Writer
FilterWriter
:装饰器模式的关键类,内部有一个Writer
BufferedWriter
:增加缓冲功能,增加newLine
方法PrintWriter
:增加format
,print
系列方法
- 简单实现
CharArrayWriter
:使用char[]
StringWriter
:使用StringBuffer
- 字节流相关:
StreamEncoder
:将字符流编码为字节流OutputStreamWriter
:使用StreamEncoder
,字节流转字符流,需要设置字符编码 CharsetFileWriter
:OutputStreamWriter
子类,内部使用FileOutputStream
- 管道相关:
PipedWriter
:管道化字符输出流
- 装饰器模式,内部有一个
API
构造函数
protected Writer()
protected Writer(Object lock)
公共方法
- append
- close
- flush
- 用于将缓冲区的数据刷出到目标设备(比如文件或控制台)中。在使用 Writer 类时,所有的输出会先被写入缓冲区,然后等到缓冲区满了、缓冲区中有数据需要被输出时,才会将缓冲区的数据刷出。
- flush 方法用于手动触发将缓冲区的数据刷出操作,使缓冲区中的数据即刻输出,而不必等到缓冲区满了或者缓冲区的自动刷出策略生效。
- nullWriter
- 返回一个丢弃所有字符的新 Writer ,对于 write 等方法什么都不做
- write
代码示例
自定义实现类:在控制台打印字符串
public class MyWriter extends Writer {
@Override
public void write(char[] cbuf, int off, int len) throws IOException {
System.out.println(new String(cbuf, off, len));
}
@Override
public void flush() throws IOException {
}
@Override
public void close() throws IOException {
}
public static void main(String[] args) throws IOException {
MyWriter myWriter = new MyWriter();
myWriter.write("abc");
myWriter.append("xxx");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
2017-08-30 SpringBoot(三) :Spring boot 中 Redis 的使用