字符流數據的寫出和讀取

寫出數據 FileWriter

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

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();

裝飾設計模式(FileReaderBufferedReader爲例)

利用同類對象(FileReader)構建本身對象自己(BufferedReader),對對象(BufferedReader)身上的功能作了加強或者改善

注:Java中原生的字符流只能操做字符類文件,但不能讀取office組件

相關文章
相關標籤/搜索