Reader And Writer
来源:互联网 发布:python图像识别库 编辑:程序博客网 时间:2024/05/16 05:14
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)
Java IO的Reader和Writer除了基于字符之外,其他方面都与InputStream和OutputStream非常类似。他们被用于读写文本。InputStream和OutputStream是基于字节的,Reader和Writer是基于字符的。
Reader
Reader类是Java IO中所有Reader的基类。子类包括BufferedReader,PushbackReader,InputStreamReader,StringReader和其他Reader。
这是一个简单的Java IO Reader的例子:
01
Reader reader =
new
FileReader(
"c:\\data\\myfile.txt"
);
02
03
int
data = reader.read();
04
05
while
(data != -
1
){
06
07
char
dataChar = (
char
) data;
08
09
data = reader.read();
10
11
}
请注意,InputStream的read()方法返回一个字节,意味着这个返回值的范围在0到255之间(当达到流末尾时,返回-1),Reader的read()方法返回一个字符,意味着这个返回值的范围在0到65535之间(当达到流末尾时,同样返回-1)。这并不意味着Reade只会从数据源中一次读取2个字节,Reader会根据文本的编码,一次读取一个或者多个字节。
你通常会使用Reader的子类,而不会直接使用Reader。Reader的子类包括InputStreamReader,CharArrayReader,FileReader等等。可以查看Java IO概述浏览完整的Reader表格。
整合Reader与InputStream
一个Reader可以和一个InputStream相结合。如果你有一个InputStream输入流,并且想从其中读取字符,可以把这个InputStream包装到InputStreamReader中。把InputStream传递到InputStreamReader的构造函数中:
1
Reader reader =
new
InputStreamReader(inputStream);
在构造函数中可以指定解码方式。更多内容请参阅InputStreamReader。
Writer
Writer类是Java IO中所有Writer的基类。子类包括BufferedWriter和PrintWriter等等。这是一个Java IO Writer的例子:
1
Writer writer =
new
FileWriter(
"c:\\data\\file-output.txt"
);
2
3
writer.write(
"Hello World Writer"
);
4
5
writer.close();
同样,你最好使用Writer的子类,不需要直接使用Writer,因为子类的实现更加明确,更能表现你的意图。常用子类包括OutputStreamWriter,CharArrayWriter,FileWriter等。Writer的write(int c)方法,会将传入参数的低16位写入到Writer中,忽略高16位的数据。
整合Writer和OutputStream
与Reader和InputStream类似,一个Writer可以和一个OutputStream相结合。把OutputStream包装到OutputStreamWriter中,所有写入到OutputStreamWriter的字符都将会传递给OutputStream。这是一个OutputStreamWriter的例子:
Writer writer = new OutputStreamWriter(outputStream);
整合Reader和Writer
和字节流一样,Reader和Writer可以相互结合实现更多更有趣的IO,工作原理和把Reader与InputStream或者Writer与OutputStream相结合类似。举个栗子,可以通过将Reader包装到BufferedReader、Writer包装到BufferedWriter中实现缓冲。以下是例子:
1
Reader reader =
new
BufferedReader(
new
FileReader(...));
2
3
Writer writer =
new
BufferedWriter(
new
FileWriter(...));
原创文章,转载请注明: 转载自并发编程网 – ifeve.com
- reader and writer
- Reader And Writer
- Java IO reader and writer
- GraphSON Reader and Writer Library
- Java Reader and Writer的类结构
- Java I/O Reader and Writer
- Reader and Writer问题(写者优先)
- Reader && Writer
- Reader/Writer
- InputStream and OutputStream, Reader and Writer UML, Example
- Java File I/O :Reader/Writer and when a Stream
- Reader和Writer类
- IO之Reader Writer
- Reader-Writer Pattern
- java IO Reader Writer
- Reader和Writer
- Java基础----Reader、Writer
- Reader和Writer
- 网站优化必备的9个Firefox插件
- 如何扩展 Visual Studio 编辑器
- (2)二叉树构造算法的验证
- 第十周 二叉树算法库
- c:for 标签的问题javax.servlet.jsp.jstl.core.LoopTagStatus
- Reader And Writer
- LightOJ 1297
- 谁动了我的服务器!
- 使用AFNetworking进行图片上传
- Block定义与使用
- oracle数据库的导出与导入备忘
- 公式推导
- 顺序环形队列
- 第十一周 项目一 验证算法