Java的IO(輸入輸出)詳談——字符流

Java還提供了字符流,用於操作字符。與字節流相似,字符流也有兩個抽象基類,分別是Reader和Writer。Reader是字符輸入流,用於從目標文件讀取字符;Writer是字符輸出流,用於向目標文件寫入字符。

其中FileReader和FileWriter是兩個很常用的子類,FileReader類用來從文件中讀取字符,操作文件的字符輸入流。
接下來用一個案例來說明:

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class TestFileReader {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		File file=new File("read.txt");
		FileReader fr=new FileReader(file);
		int len;   		//定義len,記錄讀取的字符
		//判斷是否讀取到文件的末尾
		while((len=fr.read())!=-1) {
			//打印內容
			System.out.print((char)len);
		}
		fr.close();
	}

}

運行結果:
在這裏插入圖片描述

與FileReader類對應的FileWriter類,它用來將字符寫入文件,操作文件字符輸出流的。

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

public class TestFileWriter {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		File file=new File("read.txt");
		FileWriter fw=new FileWriter(file);
		fw.write("Hello World!!!");
		System.out.println("已保存到read.txt!");
		fw.close();
	}

}

字符流的緩衝區
字符流中緩衝區的流分別是BufferedReader類和BufferedWriter類,其中BufferedReader類用於對字符輸入流進行包裝,BufferedWriter類用於對字符輸出流進行包裝,包裝後會提高字符流的讀寫效率。
接下來通過一個案例來演示緩衝區。

首先創建一個src.txt文件,文件內容爲

Hello World!!!
I am computer student
I love computer

然後開始編寫代碼:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class TestCopyBuffered {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		FileReader fr=new FileReader("src.txt");
		FileWriter fw=new FileWriter("tar.txt");
		BufferedReader br=new BufferedReader(fr);
		BufferedWriter bw=new BufferedWriter(fw);
		String str;
		//每次讀取一行文本,判斷是否到文件末尾
		while((str=br.readLine())!=null) {
			fw.write(str);
			//寫入一個換行符,該方法會根據不同操作系統生成對應的換行符
			bw.newLine();
			bw.flush();
		}
		bw.close();
		br.close();
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章