Java基础回顾 : 字符流操作

在Java 中定义了两个字符操作流:Writer、Reader。


首先来观察 Writer 类的定义结构:

public abstract class Writer extends Object implements Appendable, Closeable, Flushable


★ . 在Writer 类里面有一个很重要的内容输出方法:

├ . · 直接输出字符串:

        public void write(String str) throws IOException
├ . · 输出字符数组:

        public void write(char[] cbuf) throws IOException


★ . Writer 是一个抽象类,用其子类来实例化 .

 如果现在要操作的是文件,则可以使用FileWriter 类完成。以下是构造方法 : 

       ① . public FileWriter(File file) throws IOException

       ② . public FileWriter(File file,boolean append) throws IOException

       ③ . public FileWriter(String fileName) throws IOException

       ④ . public FileWriter(String fileName, boolean append) throws IOException

eg : 文件字符输出流范例 :

package example;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
/**
 * 文件的输入流
 * @author Miao
 *
 */
public class TestDemo {
	public static void main(String[] args) throws Exception {
		String msg = "好好学习,天天向上.";
		File destFile = new File("e:\\msg\\msg.txt");
		if(!destFile.getParentFile().exists()) {
			destFile.getParentFile().mkdirs();
		}
		Writer writer = new FileWriter(destFile);
		writer.write(msg);
		writer.flush();
		writer.close();
	}
}
▲ . 上面的示例需要注意是: 如果在使用字符输出流操作时,没有关闭,那么有可能会造成输出数据的丢失。
        字符流它在操作的过程之中会使用到缓冲区,而在关闭时会强制性的清空缓冲区,所以内容才可以输出,而如果没有关闭,那么缓冲区的内容不会被强制刷新,所以的内容就不完整,如果现在用户开发的输出流的确不能够关闭,那么就需用flush()方法强制刷新缓冲区。


===============================================================================================================================


下面来学习一下字符输入流:Reader .
public abstract class Reader extends Object implements Readable, Closeable


★ . 在Reader 类之中也提供了read()方法。

├ . · 读取单个字符

        public int read() throws IOException

├ . · 将字符读入数组
        public int read(char[] cbuf) throws IOException


★ . Reader也是一个抽象类 . 如果要想通过文件读取数据,则可以使用FileReader 子类实例化 .

FileReader 类提供了如下的构造:
       ① . public FileReader(File file) throws FileNotFoundException
       ② . public FileReader(String fileName) throws FileNotFoundException

eg : 文件字符输入流范例 :

package example;

import java.io.File;
import java.io.FileReader;
import java.io.Reader;
/**
 * 文件的输入流
 * @author Miao
 *
 */
public class TestDemo {
	public static void main(String[] args) throws Exception {
		File srcFile = new File("e:\\msg\\msg.txt");
		if(srcFile.exists()) {
			Reader reader = new FileReader(srcFile);
			char buf[] = new char[1024];
			int len = 0;
			while((len=reader.read(buf)) != -1) {
				System.out.println(new String(buf,0,len));
			}
			reader.close();
		}
	}
}

★ . 字符数据最重要的特点在于中文操作的支持上,也就是说如果现在要操作的是中文数据,那么肯定使用的是字符流。


猜你喜欢

转载自blog.csdn.net/sinat_18882775/article/details/51534497