您的位置:首页 > 其它

20-IO流-03-IO流(字符流-FileWriter)

2015-08-11 10:40 302 查看
package cn.itcast.io.demo;

import java.io.FileWriter;
import java.io.IOException;

public class IoDemo {

public static void main(String[] args) throws IOException {
/**
* 字节流的抽象基类:(两个顶层父类)
* 		InputStream,OutputStream
*
* 字符流的抽象基类:(两个顶层父类)
* 		Reader,Writer
*
* 注:由这四个类派生出来的子类,其名称都是以其父类名作为后缀(前缀就是该对象的功能)。
* 		如:InputStream的子类FileInputStream
* 		如: Reader的子类FileReader
*
* 【需求】
* 将一些文字存储到硬盘一个文件中。
* 记住:如果要操作文字数据,建议优先考虑字符流。
* 而且要将数据从内存写到硬盘上,要使用字符流中的输出流。Writer
*/

/*
* (1)打开API,点进java.io包,找到Writer类,点进其子类OutputStreamWriter,再点进其
* 子类FileWriter(即为Writer的“孙子”)。
*
* (2)发现FileWriter类中的构造函数没有空参数的,也就是说,所有构造方法均需指定参数。
*
*/

//Step1:创建一个可以往文件中写入字符数据的字符输出流对象。

/*
* 既然是往一个文件中写入文字数据,那么在创建对象时,就必须明确该文件(用于存储数据的目的地)。
*/

FileWriter fw = new FileWriter("demo.txt");//若成功将文件写入甲的电脑中F盘,而换到乙的电脑上则不能写入,因为没F盘,所以需要声明异常。
/*
* 上一行代码运行后,在当前文件夹(vedio20.IO.03)中新建了一个名为demo的文本文件
* 【注】如果demo.txt文件不存在,则会新建一个,若存在,则会将旧文件覆盖
*/

//Step2:调用Writer对象中的write(String)方法,写入数据
fw.write("abcde");//运行之后,打开demo.txt文件,发现里面啥也没有,也就是说,字符串abcde未被写入,其实【数据写入到临时存储缓冲区中】
/*
* 在Writer类中找到flush方法:
* public abstract void flush() throws IOException
* 刷新该流的缓冲。如果该流已保存缓冲区中各种 write() 方法的所有字符,则立即将它们写入预期目标。
*/
fw.flush();//此时demo.txt文件中已被写入数据abcde

/*Step3:
* 要记得关闭流,因为不关的话,该流总是开着,浪费资源不说,效率还低
* 调用Writer类中方法:
*
* public abstract void close() throws IOException
* 关闭此流,但要先刷新它。在关闭该流之后,再调用 write() 或 flush() 将导致抛出 IOException。关闭以前关闭的流无效。
*/
fw.close();//此时流已经关闭,不能再调用write方法写入数据,注意,如果该流flush而没close,则可以继续写入数据
//由于close()中已经自动调用flush方法,即先刷新再关闭,所以上面fw.flush()不需要

/**
* flush和close区别:
* flush完之后仍可以对该流写入数据,而close后该流关闭,无法写入数据
* 对于当前某一个流来说,flush可以使用多次,close只能使用一次。
*/
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: