24. Java IO: Reader-Writer && Java IO: PrintWriter
来源:互联网 发布:管道安装设计软件 编辑:程序博客网 时间:2024/05/12 10:37
Java IO: Reader
在java IO API里,Java Reader类(java.io.Reader)是所有Reader子类的基类。Reader像InputStream一样,除了它是基于字符而不是基于字节。换句话说,Java Reader用于读写文本,而InputStream是用于读取原始字节。
Unicode格式字符
在今天,许多应用用UTF(UTF-8或UTF-16)来储存文本数据。UTF-8格式需要花费一个或更多字节来表示一个字符。UTF-16需要花费2个字节来表示一个字符。因此,当读取文本数据时,UTF格式的数据中一个字节可能不是与一个字符相关。如果你从输入流里每次只读UTF-8数据中的一个字节,试着将每个字节转换成字符,你可能最终获得你不是你期望的文本。
为了解决这个问题,我们有Reader类。Reader类有将字节解码为字符的能力的。你需要告诉Reader字符设置的解码格式。当你初始化Reader时(实际上,档子初始化Reader中的一个基类)就完成了。
用Reader读取字符
Reader的read()方法返回一个int值,它包含了下一个读取的字符的char值。如果read()方法返回-1,在reader里没有更多的数据了,可以关闭它。确切的说,-1是int值,不是字节或字符值。这里是有区别的。
Reader子类
通常你用Reader的子类而不是直接用Reader.Java IO包含很多Reader子类。例如,InputStreamReader, CharArrayReader, FileReader和其他的。预览所有Reader子类,查看Java IO教程–概览 。
Reader和输入源
Reader通常连接像文件、字符数组、网络socke等等数据源。在Java IO教程–概览也有详细信息。
Java IO: Writer
在java IO API里,Java Writer类(java.io.Writer)是所有Writer子类的基类。Writer像OutputStream一样,除了它是基于字符而不是基于字节。换句话说,Java Writer用于写文本,而OutputStream是用于写入原始字节。
Unicode格式字符
在今天,许多应用用UTF(UTF-8或UTF-16)来储存文本数据。UTF-8格式需要花费一个或更多字节来表示一个字符。UTF-16需要花费2个字节来表示一个字符。为了正确地写UTF-8或UTF-16,你需要知道两种格式中的哪一个是想要存入文本,你需要知道如何正确地用已选的格式编码字符。
这就是Writer类方便的地方。Java Writer子类通常可以为你处理UTF-8和UTF-16编码,所以你不需要担心。
Writer子类
通常你用Writer的子类而不是直接用Writer.Java IO包含很多Writer子类。例如, OutputStreamWriter, CharArrayWriter, FileWriterr和其他的。预览所有Reader子类,查看[Java IO教程–概览]
Writers和输出终点
Writers通常连接像文件、字符数组、网络socke等等数据输出终点。在Java IO教程–概览也有详细信息。
Java IO: PrintWriter
Java PrintWriter类可以使你将格式化的数据写到底层的Write.例如,将int ,long和其他原始数据像文本一样格式化写入,而不是像他们的字节值。
如果你在生成报告,这个报告里混合了文本和号码,Java Printer这是就很有用。除了写原始字节的方法,PrintWriter和PrintStream一样有所有相同的方法。作为Writer的子类,PrintWriter类目的是用于写入文本。
PrintWriter例子
例如:
FileWriter writer = new FileWriter("d:\\data\\report.txt");PrintWriter printWriter = new PrintWriter(writer);printWriter.print(true);printWriter.print((int) 123);printWriter.print((float) 123.456);printWriter.printf(Locale.UK, "Text + data: %1$", 123);printWriter.close();
这个例子首先创建了PrintWriter 实例,用于连接FileWriter。第二,例子向PrintWriter写了一个布尔值,一个int值和一个float值。第三,例子调用了PrintWriter的高级的printf()方法,可将格式化的号码以文本字符串插入。自后关闭PrintWriter 。
PrintWriter Constructors
PrintWriter有一大推可选择的构造方法。可以使你连接文件、输出流或writer.Writer子类有许多构造方法,可以像参数一样传入其他Writer实例,这种方式下,和PrintWriter是有一点不同的。
print() and format()
Java PrintWriter包含强大的print()和 format()方法。这两个方法实际上有一样的功能,但是和C语言的“printf”更相似。用格式化的字符串,print()和 format()方法允许你以更高级的方式混合文本和数据。看这个链接获取更多关于print()和 format()方法的信息。
Closing a PrintWriter
当你完成向 Java PrintWrite里写入字符,你该记得关闭它。关闭PrintWriter的同时也关闭了PrintWriter 正在用于写数据的Writer实例。
通过调用它的close()方法可以关闭PrintWriter。例如:
printWriter.close();
你也在java7下用try-with-resources构造块。例如:
FileWriter writer = new FileWriter("data/report.txt");try(PrintWriter printWriter = new PrintWriter(writer)){ printWriter.write("Hello World "); printWriter.write((int)123);
注意不再有任何直接的close()方法调用。try-with-resources构造块包含这些。
注意FileWriter 实例也没在try-with-resources块里创建。这意味着try-with-resources块不会自动关闭这个FileWriter实例。然而,当PrintWriter关闭了,它也将关闭它写入数据的OutputStream ,所以当PrintWriter 关闭后,这个FileWriter 实例也将关闭。
- 24. Java IO: Reader-Writer && Java IO: PrintWriter
- java IO Reader Writer
- Java IO - Reader&Writer
- java io (四) Reader Writer
- Java IO reader and writer
- Java IO之Reader/Writer
- Java IO 字符流 Reader和Writer
- java-io初步:Reader、Writer、Buf…
- Java - IO - 字符流 - Writer - Reader
- java Io reader writer 笔记3
- Java IO(十二):Reader 和 Writer
- java IO笔记(Reader/Writer)
- 4 Java IO:Reader 和 Writer
- Java IO PrintWriter
- java.io.PrintWriter
- JAVA IO系列----FileInputStream和FileOutputStream类,Reader和Writer
- 黑马程序员--------java IO流 Reader、Writer、InputStream、OutputStream
- Java-IO之字符输入输出流(Reader和Writer)
- 新浪支付接口对接的总结
- DirectionalLight与shadow
- <video id="player" src="AusPlayChineseGirl.m3u8" controls="controls" width="90%">your explorer not s
- spring 监听器 IntrospectorCleanupListener简介
- #if defined的使用
- 24. Java IO: Reader-Writer && Java IO: PrintWriter
- X11
- 多重继承
- Android控件之ProgressBar
- 剑指offer之面试题:查找和排序
- Android控件之WebView
- Fragment 基础详解
- Struts中错误: No result defined for action
- 116. Populating Next Right Pointers in Each Node