緩衝流
也叫高效流,是對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