路徑下沒有文件,會建立文件,若是該文件已存在,會被覆蓋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組件