檔案資料io操作
1.1. 字元流原理
reader是所有字元輸入流的父類而writer是所有字元輸出流的父類。字元流是以字元(char)為單位讀寫資料的。一次處理乙個unicode。字元流都是高階流,其底層都是依靠位元組流進行讀寫資料的,所以底層仍然是基於位元組讀寫資料的。
1.2. 常用方法
reader的常用方法:
int read()
讀取乙個字元,返回的int」值低16」位有效。
int read(char chs)
從該流中讀取乙個字元陣列length個字元並存入該陣列,返回值為實際讀取到的字元量。
writer的常用方法:
void write(int c)
寫出乙個字元,寫出給定int值」低16」位表示的字元。
void write(char chs)
將給定字元陣列中所有字元寫出。
void write(string str)
將給定的字串寫出
void write(char chs,int offset,int len):
將給定的字元陣列中從offset處開始連續的len個字元寫出
2.1. 字元轉換流原理
inputstreamreader:字元輸入流, 使用該流可以設定字符集,並按照指定的字符集從流中按照該編碼將位元組資料轉換為字元並讀取。
outputstreamwriter:字元輸出流,使用該流可以設定字符集,並按照指定的字符集將字元轉換為對應位元組後通過該流寫出。
2.2. 指定字元編碼
inputstreamreader的構造方法允許我們設定字符集:
inputstreamreader(inputstream in,string charsetname)
基於給定的位元組輸入流以及字元編碼建立isr
inputstreamreader(inputstream in)
該構造方法會根據系統預設字符集建立isr
outputstreamwriter:的構造方法:
outputstreamwriter(outputstream out,string charsetname)
基於給定的位元組輸出流以及字元編碼建立osw
outputstreamwriter(outputstream out)
該構造方法會根據系統預設字符集建立osw
2.3. 使用inputstreamreader
...
public void testinput()throws ioexception
reader.close();
}...
2.4. 使用outputstreamwriter...
public void testoutput()throws ioexception
...
3.1. 構建bufferedreader物件
bufferedreader是緩衝字元輸入流,其內部提供了緩衝區,可以提高讀取效率。
bufferedreader的常用構造方法:
bufferedreader(reader reader)
例如:
fileinputstream fis
=newfileinputstream("demo.txt");
inputstreamreader isr
=newinputstreamreader(fis);
bufferedreader br
=newbufferedreader(isr);
….
注:因為bufferedreader在構造例項時需要傳入乙個字元流,所以當我們想基於乙個位元組流進行讀取時,要先將位元組流轉換為字元流後方可建立緩衝字元輸入流bufferedreader。
3.2. 使用br讀取一行字串
bufferedreader提供了乙個可以便於讀取一行字串:
string readline()
該方法連續讀取一行字串,直到讀取到換行符為止,返回的字串中不包含該換行符。若eof則該方法返回null。
例如:
fileinputstream fis
=newfileinputstream("demo.txt");
inputstreamreader isr
=newinputstreamreader(fis);
bufferedreader br
=newbufferedreader(isr);
string str =null;
while((str = br.readline())!=null)
br.close();
4.1. 建立printwriter物件
printwriter是具有自動行重新整理的緩衝該字元輸出流。其提供了比較豐富的構造方法:
printwriter(file
file)
printwriter(string filename)
printwriter(outputstream out)
printwriter(outputstream out,boolean autoflush)
printwriter(writer writer)
printwriter(writer writer,boolean autoflush)
其中引數為outputstream與writer的構造方法提供了乙個可以傳入boolean值引數,該引數用於表示printwriter是否具有自動行重新整理。
4.2. printwriter的過載print和println方法
使用printwriter寫出字串時我們通常不使用writer提供的write()相關方法,而是使用print和println等方法,printwriter提供了若干過載的print與println方法,其中println方法是在寫出資料後自動追加乙個系統支援的換行符。
過載方法有:
void print(int i)//列印整數
void print(char c)//列印字元
void print(boolean b)//列印boolean值
void print(char c)//列印字元陣列
void print(double d)//列印double值
void print(float f)//列印float值
void print(long l)//列印long值
void print(string str)//列印字串
注:這些方法還有類似的println方法,引數與上面相同。
4.3. 使用pw輸出字元資料
fileoutputstream fos
=newfileoutputstream("demo.txt");
outputstreamwriter osw
=newoutputstreamwriter(fos,"utf-8");
//建立帶有自動行重新整理的pw
printwriter pw =newprintwriter(osw,true);
pw.close();
java基礎 訪問大檔案資料
實現原理 通過 while 迴圈分次讀取資料 生成輸入流物件 fileinputstream 生成輸出流物件 fileoutputstream 生成位元組字數陣列 btye 1024 通過while 迴圈每次 read 位元組陣列的最大值,當 read 返回值是 1的時候,說明讀取完畢,跳出迴圈 b...
Java檔案Io基礎
file file2 new file d test.txt 建立檔案物件,file類中的構造方法中的引數為字串,表示的是檔案的位址,其中,在絕對路徑中,磁碟的編號後的斜桿可以為 windows系統中路徑標識 也可以為 跨平台 制定路徑之下建立的檔案物件,不代表著該路徑之下有這個檔案,也就是說fil...
檔案資料IO 的細節分析
參考 linux裝置驅動開發詳解 基於最新的linux4.0核心 宋寶華編著.程式設計離不開資料,所以資料獲取是程式設計的第一步.資料io可以是阻塞式式的或非阻塞式的.例如讀取資料,當資料沒有準備好時,是把讀取執行緒或程序阻塞,還是立即返回乙個無資料的錯誤.這可由使用者選擇.預設的檔案開啟方式是阻塞...