Buffered Reader/Writer字符輸入緩沖流
Buffered Reader字符輸?入緩沖流
- 為了提高了單個字符讀寫的效率,進行字符批量的讀寫;為了提高字符流讀寫的效率,引入了緩沖機制
- 采用包裝設計模式(錦上添花)
- BufferedReader
- 簡介:當BufferedReader在讀取文本檔案時,會先盡量從檔案中讀入字符資料并放滿緩沖區,而之后若使用read)方法,會先從緩沖區中進行讀取,如果緩沖區資料不足,才會再從檔案中讀取
- 建構式
BufferedReader(Reader in)
BufferedReader(Reader in,int sz)
講解:創建一個使用指定大小輸入緩沖區的緩沖字符輸入流,
- 常用API
boolean ready()
講解:判斷此流是否已準備好被讀取,依賴其他流,所以一般需要做判斷
int read()
講解:讀取單個字符
int read(char[]cbuf,int off,int len)
講解:讀取一部分字符到陣列里面,從陣列下標off處放置1ength長度的字符String readLine()
String readLine()
講解:讀取一整行文本行,回傳一整行字串,如果讀到行尾了就回傳nu11,注意回傳的一行字符中不包含換行符
void close()
講解:關閉流釋放資源
- eg:
package domee.chapter12;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferReaderTest {
public static void main(String[] args) throws IOException {
String dir = "C:\\Users\\123\\Desktop\\test\\BufferReaderTest.txt";
//test1(dir);
test2(dir);
}
public static void test1(String dir) throws IOException{
//按行讀取字符
BufferedReader bufferedReader = new BufferedReader(new FileReader(dir));
if (!bufferedReader.ready()){
System.out.println("檔案流暫時無法讀取");
return;
}
int size ;
char[] chars = new char[1024];
while ((size = bufferedReader.read(chars)) != -1 ){
System.out.println(new String(chars,0,size));
}
bufferedReader.close();
}
public static void test2(String dir) throws IOException{
//按行讀取
BufferedReader bufferedReader = new BufferedReader(new FileReader(dir));
if (!bufferedReader.ready()){
System.out.println("檔案流暫時無法讀取");
return;
}
String string;
while ((string = bufferedReader.readLine()) != null ){
System.out.println(string);
}
bufferedReader.close();
}
}
BufferedWriter字符輸出緩沖流
- BufferedWriter
- 簡介:寫入的資料并不會先輸出到目的地,而是先存盤至緩沖區中,如果緩沖區中的資料滿了,才會一次對目的地進行寫出
- 建構式
Bufferedwriter(Writer out)
Bufferedwriter(Writer out,int sz)
- 常用API
void write(int c)
講解:寫入一個字符
void write(char[]cbuf,int off,int 1en)
講解:寫入字符陣列的一部分,通過off和len控制,
void write(String s,int off,int i)
講解:寫入字符陣列的一部分,通過off和len控制)
void newLine()
講解:寫入一個換行符號
void close()
講解:關閉輸入流并釋放與該流關聯的系統資源
void flush()
講解:write是寫到緩沖區中,可以認為是記憶體中,當緩沖區滿時系統會自動將緩沖區的內容寫入檔案,但是一般還有一部分有可能會留在記憶體這個緩沖區中,所以需要呼叫flush慷訓沖區資料,
- eg(會自動創建檔案)
package domee.chapter12;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferWriterTest {
public static void main(String[] args)throws IOException {
String dir = "C:\\Users\\123\\Desktop\\test\\BufferWriterTest.txt";
test1(dir);
}
public static void test1(String dir)throws IOException{
BufferedWriter writer = new BufferedWriter(new FileWriter(dir));
char ch = '哈';
String string = "哈哈,早上好";
String string1 = "你好,世界";
writer.write(ch);
writer.write(string,0,string.length());
writer.newLine();
writer.write(string1);
writer.close();//未關閉無法寫入
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/259717.html
標籤:java
上一篇:情人節表白代碼【愛你到天荒地老】
下一篇:成績查詢類小程式
