為啥要緩存流?
- 答:當需要將數據寫入磁盤時,在每一次讀寫都會訪問硬盤,這樣就會導致頻繁的IO操作,降低了程序的性能,而緩存流就是為了解決這一問題而出生的。
什么是緩存流?
- da:就是將需要讀入或者寫入的數據,一次性的讀/寫較多到緩存流之中,之后的操作就可以從緩存流中進行數據的讀取/寫入,從而減少了IO操作。就像吃飯一樣,先把飯盛到飯碗,就不用每一口都要到電飯煲里取。
字節(jié)流與緩存流
- 字節(jié)流是每對一個字節(jié)進行操作都要進行一次io,而緩存流在寫入數據的時候,會先把數據寫入到緩存區(qū),直到緩存區(qū)達到一定的量,才把這些數據,一起寫入到硬盤中去。
使用BufferedReader緩存流讀取數據
- 緩存字符流BufferedReader可以一次性讀取一行數據。
package twodoge;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public static void main(String args[]){
File f = new File('D:twodoge.txt');
//創(chuàng)建文字字符流
//緩存流必須建立在一個基礎流上
try(
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
)
{
while(True){
String line = br.readLine();
if(line == null)
break;
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
使用PringWriter緩存流寫出數據
- PrintWriter 緩存字符輸出流, 可以一次寫出一行數據
package twodoge;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
public class myPrintWriter {
public static viod main(String args[]) {
File f = new File("D://twodoge.txt");
try (
FileWriter fw = new FileWriter(f);
PrintWriter pw = new PrintWriter(fw);
)
{
pw.printWriter("test1");
pw.printWriter("test2");
} catch (IOException e) {
e.printStackTrace();
}
}
}
flush
- 有時候需要需要立即把數據寫入到磁盤中,這時候就要用flush。
package twodoge;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
public class myPrintWriter {
public static viod main(String args[]) {
File f = new File("D://twodoge.txt");
try (
FileWriter fw = new FileWriter(f);
PrintWriter pw = new PrintWriter(fw);
)
{
pw.println("test1");
fw.flush();
pw.println("test2");
fw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}