緩沖流
1瞄崇、緩沖流要套接在相應(yīng)的節(jié)點(diǎn)流之上,對讀寫的數(shù)據(jù)提供了緩沖的功能壕曼,提高了讀寫的效率苏研,同時(shí)增加了一些新的方法。
注:因?yàn)樵黾恿隧n緩沖腮郊,可以減少訪問硬盤的次數(shù)摹蘑,從而保護(hù)我們的硬盤。
提供了四種緩沖流轧飞。構(gòu)造方法有:
BufferReader (Reader in)
BufferedReader(Reader in, int size) //size為自定義的緩存區(qū)的大小
BufferedWriter(Writer out)
BufferedWriter(Writer out, int size)
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in, int size)
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out, int size)
緩沖輸入流支持父類的mark和reset方法衅鹿。。
BufferedReader提供了readLine方法用于讀取一行字符串(以\r或\n分隔)
BufferedWriter提供了newLine用于寫入一個(gè)新的行分隔符过咬。
對于輸出的緩沖流大渤,寫出的數(shù)據(jù)會現(xiàn)在內(nèi)存中緩存,使用flush方法將會使內(nèi)存中的數(shù)據(jù)立刻寫出掸绞。
關(guān)于關(guān)閉處理流:
寫了一個(gè)小程序泵三,剛開始節(jié)點(diǎn)流和處理流都沒有關(guān)閉,然后本來要寫入文件的東西一個(gè)都沒有寫入衔掸。
后來寫了只是關(guān)閉節(jié)點(diǎn)流烫幕,然后要寫入文件的東西也是一個(gè)都沒有寫入。
最后只是關(guān)閉處理流敞映,程序達(dá)到預(yù)期運(yùn)行效果纬霞。
然后測試了一下既關(guān)閉節(jié)點(diǎn)流又關(guān)閉處理流,程序報(bào)錯(cuò)
import java.io.*;
public class TestBufferedStream {
public static void main(String[] args) {
FileInputStream fis = null;
BufferedInputStream bis = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
int c;
fis = new FileInputStream("E:/java.txt");
fos = new FileOutputStream("e:/java5.txt");
bos = new BufferedOutputStream( fos );
bis = new BufferedInputStream( fis );
for ( int i = 0; i<100 && (c = bis.read()) != -1; i++) {
//System.out.print((char)c + " ");
bos.write((char)c);
}
//fis.close();
//fos.close();
bis.close();
bos.close();
}catch (FileNotFoundException e2) {
e2.printStackTrace();
}
catch (IOException e1) {
e1.printStackTrace();
}
File file = new File("E:/java5.txt");
System.out.println(file.length());
}
}
參考:http://www.cnblogs.com/byrhuangqiang/p/3924985.html
綜上:使用處理流最簡單的關(guān)閉方式是:
直接關(guān)閉處理流驱显,而不用管與之相關(guān)聯(lián)的節(jié)點(diǎn)流诗芜。
因?yàn)樵訇P(guān)閉處理流時(shí)會調(diào)用節(jié)點(diǎn)流的關(guān)閉函數(shù)瞳抓。
InputStreamReader 把字節(jié)流轉(zhuǎn)換為字符流。
OutputStreamWriter 把字節(jié)流轉(zhuǎn)換為字符流伏恐。
這樣子可以直接寫字符串進(jìn)入文件孩哑。也可以直接讀字符串。
將標(biāo)準(zhǔn)輸入流套接到轉(zhuǎn)換字符輸入流中翠桦,再將轉(zhuǎn)換字符流套接到緩沖流中横蜒。
import java.io.*;
public class TestTranFormReader {
public static void main(String[] args) {
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader bfr =new BufferedReader(in);
String s = null;
try{
s = bfr.readLine();
while (s != null) {
System.out.println(s);
s = bfr.readLine();
if (s.equalsIgnoreCase("exit")) {
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}