Java 如何利用緩沖流讀寫文件

利用緩沖流讀寫文件

從控制臺讀取數據寫入文件

讀取文件輸出到控制臺

public class BookTest {
	public static void main(String[] args) {
		//從控制臺輸入信息並寫入文件中
		BufferedReader ir=new BufferedReader(new InputStreamReader(System.in));   //包裝成字符輸入緩沖流
		BufferedWriter bw=null;
		try {
			bw=new BufferedWriter(new FileWriter("D:\\Test.txt"));
			for(String str=null;(str=ir.readLine())!=null;) {         
                //輸入 e 實現寫文件安全退出
				if(str.equalsIgnoreCase("e")) {
					System.out.println("安全退出"); 
					break;
				}
				bw.write(str);             //寫入一行
				bw.newLine();              //寫入行分隔符
				bw.flush();                //刷新緩沖流
			}
		}catch(FileNotFoundException e) {
			e.printStackTrace();
		}catch(IOException e) {
			e.printStackTrace();
		}finally {
			if(ir!=null) {
				try {
					ir.close();
				}catch(IOException e) {
					e.printStackTrace();
				}
			}
			if(bw!=null) {
				try {
					bw.close();
				}catch(IOException e) {
					e.printStackTrace();
				}
			}
		}
		Book[] book=new Book[20];             //對象數組
		int k=0;
		BufferedReader br1=null;              
		try {
			br1=new BufferedReader(new FileReader("D:\\Test.txt"));      //利用緩沖流讀取文件
			String str=null;
			while((str=br1.readLine())!=null) {
				System.out.println(str);      //輸出一行
				//String[] s=str.split(",");
				//System.out.println(s[0]);
				//book[k++]=new Book(s[0],s[1],s[2],s[3],Integer.parseInt(s[4]));
			}
		}catch(FileNotFoundException e) {
			e.printStackTrace();
		}catch(IOException e) {
			e.printStackTrace();
		}finally {
			if(br1!=null) {
				try {
					br1.close();
				}catch(IOException e) {
					e.printStackTrace();
				}
			}
		}
     }
}

運行效果:

值得註意的是:

該程序的寫文件部分在程序的第一次運行中運行即可,以後運行程序的時候要將此部分註釋掉,否則會一直先要從控制臺讀取數據寫到文件中,除非需要修改文件中的內容。

文件流和緩沖流

按照處理數據的單位的不同:字節流,字符流(處理的文本文件)

按照角色不同:節點流(直接作用於文件的),處理流

文件流(節點流):

FileInputStream
FileOutputStream
FileReader
FileWriter

緩沖流:有刷新

BufferedInputStream
BufferedOutputStream
BufferedReader  (ReadLine)(newLine)
BufferedWriter

輸入流 file.read(new byte[5]);

把文件讀到字節數組裡

BufferedInputStream
int (len = file.read(new byte[5]))!=-1
FileReader
 (file.readLine(str)!=null

轉化流:InputStreamReaderOutputStreamWriter

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: