路径下没有文件,会建立文件,若是该文件已存在,会被覆盖java
FileWriter write = new FileWriter(“E:\\a.txt”);设计模式
写出数据数组
流程:数据—>缓冲区满了>文件 //缓冲区满了才会将数据写入文件spa
wirter.write(“abc”); //当数据比较少,写到缓冲区,缓冲区还没满程序已经结束,因此不会写出数据设计
冲刷缓冲区,把还未写满数据的缓冲区冲刷出去,数据就会写入文件code
writer.flush();对象
输出流使用完以后,要进行关流操做,以防程序占用内存而致使其它程序不能调用blog
writer.close(); //关流以前会自动作一次冲刷缓冲区的操做内存
释放资源资源
writer = null;
package cn.jay.exer; import java.io.FileWriter; import java.io.IOException; public class FileWriterDemo { public static void main(String[] args) { //1、将流对象放到try以外定义而且赋值为null,放到try内建立 //流对象try外定义是为了防止finally中不能调用writer FileWriter writer = null; try { writer = new FileWriter("E:\\a.txt"); writer.write("abc"); //4、写完数据以后须要手动冲刷一次缓冲区,防止关流失败后数据在内存中得不到释放 writer.flush(); } catch (IOException e) { e.printStackTrace(); } finally { //2、关流以前须要判断是否为空,若是为空,null.close无心义 if (writer != null) try { writer.close(); } catch (IOException e) { e.printStackTrace(); } finally { //3、关流以后要将对象强制置为null,释放内存占用 writer = null; } } } }
FileReader没有缓冲区,须要手动提供一个字符数组做为缓冲区来使用
import java.io.FileReader; import java.io.IOException; public class FileInputStreamDemo { public static void main(String[] args) throws IOException { //一次读取一个字符 FileReader reader = new FileReader("E:\\a.txt"); //定义一个变量用来记录每次读取到的字符 int i = -1; //该read的返回值表示这一次读取到的字符 while((i = reader.read()) != -1){ System.out.println((char)i); } reader.close(); /* //一次读取多个字符 FileReader reader = new FileReader("E:\\a.txt"); //设置为每次存储10个字符 char[] c = new char[10]; //定义一个变量用来记录每次读取到的字符个数,给变量len赋初值(能够是任意值) //防止read读取数据失败致使报错 int len = -1; //该read的返回值表示这一次读取到的字符的个数 while((len = reader.read(c))!=-1) System.out.println(new String(c,0,len)); reader.close(); */ } }
引入BufferReader以后:
FileReader 读取数据
BufferReader 提供缓冲区
BufferReader reader = new BufferReader(new FileReader(“E:\\a.txt”)); //装饰设计模式 //读取一行数据 //String str = reader.readLine(); //初始化 String str = null; //读取数据,按行读取,读到null,中止 while((str = reader.readLine()) != null){ System.out.println(str); } //关流 reader.close();
装饰设计模式(以FileReader和BufferedReader为例)
利用同类对象(FileReader)构建本身对象自己(BufferedReader),对对象(BufferedReader)身上的功能作了加强或者改善
注:Java中原生的字符流只能操做字符类文件,但不能读取office组件