緩沖流是為了讀取和寫入的速度,提高效率主要包括:字節緩沖流和字符緩沖流
字節緩沖流:
根據流的方向,共有2個:字節緩沖輸出流BufferedOutputStream和字節緩沖輸入流BufferedInputStream,它們的內部都包含了一個緩沖區,通過緩沖區讀寫,就可以提高了IO流的讀寫速度
構造方法:public BufferedOutputStream(OutputStream out);
//創建基本的字節輸出流
FileOutputStream fileOut=newFileOutputStream("abc.txt");
//使用高效的流,把基本的流進行封裝,實現速度的提升
BufferedOutputStream out=newBufferedOutputStream(fileOut);
//2,寫數據
out.write("hello".getBytes());
//3,關閉流
out.close();
}
構造方法:public BufferedInputStream(InputStream in);
FileInputStream fileIn =newFileInputStream("abc.txt");
//把基本的流包裝成高效的流
BufferedInputStream in =newBufferedInputStream(fileIn);
//2,讀數據
int?ch = -1;
while( (ch = in.read()) != -1 ) {
//打印
System.out.print((char)ch);
}
//3,關閉
in.close();
高效的實現復制文件;
BufferedInputStream in =newBufferedInputStream(newFileInputStream("c:\\a.txt"));
//2,指定目的地
BufferedOutputStream out=newBufferedOutputStream(newFileOutputStream("c:\\b.txt"));
//3,讀數據
byte[] buffer =newbyte[1024];
intlen = -1;
while( (len = in.read(buffer)) != -1) {
//4,寫數據
out.write(buffer, 0, len);
}
//5,關閉流
in.close();
out.close();
字符緩沖流:
字符緩沖輸入流BufferedReader。字符緩沖輸出流BufferedWriter
BufferedWriter
//創建流
//基本字符輸出流
FileWriter fileOut =newFileWriter("file.txt");
//把基本的流進行包裝
BufferedWriter out =newBufferedWriter(fileOut);
//2,寫數據
for(inti=0; i<5; i++) {
out.write("hello");
out.newLine();//寫入換行
}
//3,關閉流
out.close();
}
BufferedReader
從字符輸入流中讀取文本,緩沖各個字符,從而實現字符、數組和行的高效讀取。
publicStringreadLine()讀取一個文本行,包含該行內容的字符串,不包含任何行終止符,如果已到達流末尾,則返回null
//1,創建流
BufferedReader in =newBufferedReader(newFileReader("file.txt"));
//2,讀數據
//一次讀取文本中一行的字符串內容
String line =null;
while( (line = in.readLine()) !=null){
System.out.println(line);
}
//3,關閉流
in.close();
使用緩沖流高效的完成文件的復制
//1,指定數據源,是數據源中讀數據,采用輸入流
BufferedReader in =newBufferedReader(newFileReader("file.txt"));
//2,指定目的地,是把數據寫入目的地,采用輸出流
BufferedWriter out =newBufferedWriter(newFileWriter("copyFile.txt"));
//3,讀數據
String line =null;
while( (line = in.readLine()) !=null) {
//4,寫數據
out.write(line);
//寫入換行符號
out.newLine();}
//5,關閉流
out.close(); in.close();
}
這么多流該如何選擇:
目的設備:
硬盤:文件File開頭。
內存:數組,字符串。
屏幕:System.out
網絡:Socket
完全可以明確具體要使用哪個流對象。
知識點總結
字節流
字節輸入流InputStream
FileInputStream操作文件的字節輸入流
BufferedInputStream高效的字節輸入流
字節輸出流OutputStream
FileOutputStream操作文件的字節輸出流
BufferedOutputStream高效的字節輸出流
字符流
字符輸入流Reader
FileReader操作文件的字符輸入流
BufferedReader高效的字符輸入流
InputStreamReader輸入操作的轉換流(把字節流封裝成字符流)
字符輸出流Writer
FileWriter操作文件的字符輸出流
BufferedWriter高效的字符輸出流
OutputStreamWriter輸出操作的轉換流(把字節流封裝成字符流)
方法:
讀數據方法:
read()一次讀一個字節或字符的方法
read(byte[]char[])一次讀一個數組數據的方法
readLine()一次讀一行字符串的方法(BufferedReader類特有方法)
readObject()從流中讀取對象(ObjectInputStream特有方法)
寫數據方法:
write(int)一次寫一個字節或字符到文件中
write(byte[] char[])一次寫一個數組數據到文件中
write(String)一次寫一個字符串內容到文件中
uwriteObject(Object )寫對象到流中(ObjectOutputStream類特有方法)
unewLine()寫一個換行符號(BufferedWriter類特有方法)
向文件中寫入數據的過程
1,創建輸出流對象
2,寫數據到文件
3,關閉輸出流
從文件中讀數據的過程
1,創建輸入流對象
2,從文件中讀數據
3,關閉輸入流
l文件復制的過程
1,創建輸入流(數據源)
2,創建輸出流(目的地)
3,從輸入流中讀數據
4,通過輸出流,把數據寫入目的地
5,關閉流
?