JavaIO-字符流
2015-05-02 13:58
344 查看
12.3.2 字符流(1)
在程序中一个字符等于两个字节,那么Java提供了Reader和Writer两个专门操作字符流的类。
1.字符输出流Writer
Writer本身是一个字符流的输出类,此类的定义如下:
此类本身也是一个抽象类,如果要使用此类,则肯定要使用其子类,此时如果是向文件中写入内容,应该使用FileWriter的子类。Wirter类的常用方法如表12-5所示。
表12-5 Writer类的常用方法
FileWriter类的构造方法定义如下:
U提示:关于Appendable接口的说明。
在Writer类中除了实现Closeable和Flushable两个接口之外,还实现了一个Appendable接口,此接口定义如下:
此接口表示的是内容可以被追加,接收的参数是CharSequence,实际上String类就实现了此接口,所以可以直接通过此接口的方法向输出流中追加内容。
范例:向文件中写入数据
整个程序与OutputStream的操作流程并没有什么太大的区别,唯一的好处是,可以直接输出字符串,而不用将字符串变为byte数组之后再输出。
程序运行结果:
12.3.2 字符流(2)
2.使用FileWriter追加文件的内容
在使用字符流操作时,也可以实现文件的追加功能,直接使用FileWriter类中的以下构造即可实现追加:
将append的值设置为true,表示追加。
范例:追加文件内容
程序运行结果:
3.字符输入流Reader
Reader是使用字符的方式从文件中取出数据,Reader类的定义如下:
Reader本身也是抽象类,如果现在要从文件中读取内容,则可以直接使用FileReader子类。Reader类的常用方法如表12-6所示。
表12-6 Reader类的常用方法
FileReader的构造方法定义如下:
范例:从文件中读取内容
12.3.2 字符流(3)
程序运行结果:
如果此时不知道数据的长度,也可以像之前操作字节流那样,使用循环的方式进行内容的读取。
范例:使用循环的方式读取内容
程序运行结果:
在程序中一个字符等于两个字节,那么Java提供了Reader和Writer两个专门操作字符流的类。
1.字符输出流Writer
Writer本身是一个字符流的输出类,此类的定义如下:
public abstract class Writer extends Object implements Appendable, Closeable, Flushable
此类本身也是一个抽象类,如果要使用此类,则肯定要使用其子类,此时如果是向文件中写入内容,应该使用FileWriter的子类。Wirter类的常用方法如表12-5所示。
表12-5 Writer类的常用方法
序 号 | 方 法 | 类 型 | 描 述 |
1 | public abstract void close() hrows IOException | 普通 | 关闭输出流 |
2 | public void write(String str) throws IOException | 普通 | 将字符串输出 |
3 | public void write(char[] cbuf) throws IOException | 普通 | 将字符数组输出 |
4 | public abstract void flush() throws IOException | 普通 | 强制性清空缓存 |
public FileWriter(File file) throws IOException
U提示:关于Appendable接口的说明。
在Writer类中除了实现Closeable和Flushable两个接口之外,还实现了一个Appendable接口,此接口定义如下:
public interface Appendable{ Appendable append(CharSequence csq) throws IOException ; Appendable append(CharSequence csq, int start,int end) throws IOException ; Appendable append(char c) throws IOException }
此接口表示的是内容可以被追加,接收的参数是CharSequence,实际上String类就实现了此接口,所以可以直接通过此接口的方法向输出流中追加内容。
范例:向文件中写入数据
package org.lxh.demo12.chariodemo; import java.io.File; import java.io.FileWriter; import java.io.Writer; public class WriterDemo01 { public static void main(String[] args) throws Exception { // 异常抛出, 不处理 // 第1步:使用File类找到一个文件 File f = new File("d:" + File. separator + "test.txt");// 声明File 对象 // 第2步:通过子类实例化父类对象 Writer out = null; // 准备好一个输出的对象 out = new FileWriter(f); // 通过对象多态性,进行实例化 // 第3步:进行写操作 String str = "Hello World!!!"; // 准备一个字符串 out.write(str); // 将内容输出 // 第4步:关闭输出流 out.close(); // 关闭输出流 } }
整个程序与OutputStream的操作流程并没有什么太大的区别,唯一的好处是,可以直接输出字符串,而不用将字符串变为byte数组之后再输出。
程序运行结果:
2.使用FileWriter追加文件的内容
在使用字符流操作时,也可以实现文件的追加功能,直接使用FileWriter类中的以下构造即可实现追加:
public FileWriter(File file, boolean append) throws IOException
将append的值设置为true,表示追加。
范例:追加文件内容
package org.lxh.demo12.chariodemo; import java.io.File; import java.io.FileWriter; import java.io.Writer; public class WriterDemo02 { public static void main(String[] args) throws Exception { // 异常抛出, 不处理 // 第1步:使用File类找到一个文件 File f = new File("d:" + File. separator + "test.txt"); // 声明File 对象 // 第2步:通过子类实例化父类对象 Writer out = null; // 准备好一个输出的对象 out = new FileWriter(f,true); // 通过对象多态性进行实例化 // 第3步:进行写操作 String str = "\r\nLIXINGHUA\r\nHello World!!!" ; // 准备一个字符串 out.write(str); // 将内容输出 // 第4步:关闭输出流 out.close(); // 关闭输出流 } }
程序运行结果:
Reader是使用字符的方式从文件中取出数据,Reader类的定义如下:
public abstract class Reader extends Object implements Readable, Closeable
Reader本身也是抽象类,如果现在要从文件中读取内容,则可以直接使用FileReader子类。Reader类的常用方法如表12-6所示。
表12-6 Reader类的常用方法
序号 | 方 法 | 类型 | 描 述 |
1 | public abstract void close() throws IOException | 普通 | 关闭输出流 |
2 | public int read() throws IOException | 普通 | 读取单个字符 |
3 | public int read(char[] cbuf) throws IOException | 普通 | 将内容读到字符数组中, 返回读入的长度 |
public FileReader(File file) throws FileNotFoundException
范例:从文件中读取内容
package org.lxh.demo12.chariodemo; import java.io.File; import java.io.FileReader; import java.io.Reader; public class ReaderDemo01 { public static void main(String[] args) throws Exception { // 异常抛出, 不处理 // 第1步:使用File类找到一个文件 File f = new File("d:" + File. separator + "test.txt");// 声明File 对象 // 第2步:通过子类实例化父类对象 Reader reader = null; // 准备好一个输入的对象 reader = new FileReader(f); // 通过对象多态性进行实例化 // 第3步:进行读操作 char c[] = new char[1024]; // 所有的内容读到此数组中 int len = reader.read(c); // 将内容输出 // 第4步:关闭输入流 reader.close(); // 关闭输入流 System.out.println("内容为:" + new String(c, 0, len)); // 把char数组变为字符串输出 } }
12.3.2 字符流(3)
程序运行结果:
内容为:Hello World!!! LIXINGHUA Hello World!!! LIXINGHUA Hello World!!!
如果此时不知道数据的长度,也可以像之前操作字节流那样,使用循环的方式进行内容的读取。
范例:使用循环的方式读取内容
package org.lxh.demo12.chariodemo; import java.io.File; import java.io.FileReader; import java.io.Reader; public class ReaderDemo02 { public static void main(String[] args) throws Exception { // 异常抛出, 不处理 // 第1步:使用File类找到一个文件 File f = new File("d:" + File. separator + "test.txt");// 声明File 对象 // 第2步:通过子类实例化父类对象 Reader reader = null; // 准备好一个输入的对象 reader = new FileReader(f); // 通过对象多态性进行实例化 // 第3步:进行读操作 int len = 0; // 用于记录读取的数据个数 char c[] = new char[1024]; // 所有的内容读到此数组中 int temp = 0; // 接收读取的每一个内容 while ((temp = reader.read()) != -1) { // 将每次的读取内容给temp变量, 如果temp的值不是-1,则表示文件没有读完 c[len] = (char) temp; len++; } // 第4步:关闭输入流 reader.close(); // 关闭输入流 System.out.println("内容为:" + new String(c, 0, len)); } }
程序运行结果:
内容为:Hello World!!! LIXINGHUA Hello World!!! LIXINGHUA Hello World!!!
相关文章推荐
- Java IO4:字符编码
- Java IO浅谈(个人感觉例子不错,替换流,数组,文件或者大的字符串中的一些字符或者字符串)
- JAVA IO - BufferedWriter 输出字符流
- Java学习笔记之 IO包 字符流
- java IO之字节流和字符流比较
- Java-IO之字符输入输出流(Reader和Writer)
- 黑马程序员_毕向东_Java基础_DAY18-19_IO基础、字符流
- Java-IO之PrintWriter(字符打印输出流)
- javaIO-字符流-写操作 FileWriter
- java io系列19之 CharArrayWriter(字符数组输出流)
- 黑马程序员——java基础---IO---字符流
- javaIo 字符流
- Java IO5:字符流
- java IO总结之字符流操作文件读写
- java IO总结之字符流操作文件读写(高效)
- 【Java.IO】I/O 【字节/字符】【处理流】 - 之 - 【缓冲流 】- Buffered*
- Java IO 字节流与字符流 (二)
- Java生涯——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 【Java.IO】I/O 【字节/字符】【节点流】 - 之 - 【管道流】 - Piped*
- java io系列25之 PrintWriter (字符打印输出流)