【IO 緩衝區】 文件操作

緩衝流

也叫高效流,是對4個基本的Filexxx流的增強版(讀取、寫入的速度更快)


字節緩衝流:BufferedInputStream、BufferedOutputStream
字符緩衝流:BufferedReader、BufferedWriter

緩衝流的基本原理:是在創建流對象時,會創建一個內置的默認大小的緩衝區數組,通過緩衝區讀寫,減少系統IO次數,從而提高讀寫的效率

 

  • BufferedOutputStream   (implements  OutputStream)

package demo1;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;

public class myDemo11 {
	public static void main(String[] args) throws Exception {
		
		FileOutputStream fos = new FileOutputStream("E://a.txt");
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		bos.write("寫入數據".getBytes());
		bos.flush();
		
		bos.close();
	}
}

 

  • BufferedInputStream   (implements  InputStream)

package demo1;

import java.io.BufferedInputStream;
import java.io.FileInputStream;


public class myDemo11 {
	public static void main(String[] args) throws Exception {
		
		FileInputStream fis = new FileInputStream("E://a.txt");
		BufferedInputStream bis = new BufferedInputStream(fis);
		int len = 0;
		while((len = bis.read())!=-1){
			System.out.println(len);
		}
		bis.close();
	}
}

運行結果:

208
180
200
235
202
253
190
221

(Utf-8中,一箇中文佔用三個字節)

public class myDemo11 {
	public static void main(String[] args) throws Exception {
		
		FileInputStream fis = new FileInputStream("E://a.txt");
		BufferedInputStream bis = new BufferedInputStream(fis);
		
		byte[] bytes = new byte[1024];
		int len = 0;
		while((len = bis.read(bytes))!=-1) {
			System.out.println(new String(bytes));
		}
		
		bis.close();
	}
}

運行結果:

寫入數據

文件複製:

package demo1;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;


public class myDemo11 {
	public static void main(String[] args) throws Exception {
		
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E://asd.txt"));
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D://asd.txt"));
		
		//方法1
//		int len = 0;
//		while((len = bis.read())!=-1){
//			bos.write(len);
//		}
		

		//方法2
		byte[] bytes = new byte[1024];
		int len = 0;
		while((len = bis.read(bytes))!=-1) {
			bos.write(bytes);
		}
		
		bos.close();
		bis.close();
	}
}

 

  • BufferedWriter

 

 

 

package demo1;

import java.io.BufferedWriter;
import java.io.FileWriter;

public class myDemo11 {
	public static void main(String[] args) throws Exception {
		
		BufferedWriter bw = new BufferedWriter(new FileWriter("E://a.txt"));
		for(int i = 0;i<5;i++){
			bw.write("語句"+i);
			bw.newLine();  // 相當於 bw.write("\r\n");
		}
		bw.flush();
		bw.close();
	}
}

 

  • BufferedReader

package demo1;

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

public class myDemo11 {
	public static void main(String[] args) throws Exception {
		
		BufferedReader br = new BufferedReader(new FileReader("E://a.txt"));
		String line = ""; 
		while((line = br.readLine())!=null){
			System.out.println(line);
		}
		
		br.close();
	}
}

 運行結果:

語句0
語句1
語句2
語句3
語句4

 

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