使用位元組輸入流讀取:乙個乙個傳
使用位元組緩衝輸入流:傳陣列bufferedoutputstream位元組緩衝輸出流
close()
flush()
write(byte b) write(byte b,int off,int len) abstract void write(int b)
要flush或者close重新整理緩衝區,才能顯示在檔案
1.建立fileinputsteam物件,構造方法中繫結要讀取的資料來源
2.建立bufferedinputstream物件,構造方法中傳遞fileinputstream物件,提高fileinputstream物件的讀取效率。
3.使用它的read,讀取檔案。
4.釋放資源
fileinputstream fis=new fileinputstream(「abc\123.txt」)
bufferedinputstream bis=new bufferedinputstream(fis)
int len=0
while((len=bis.read())!-1)
syso(len)
bis.close
int read()
int read(byte b)
void close()
bufferedwriter bw=new bufferedwriter(new filewrite(「abc/123.txt」))
void write(int c) write(char cbuf)寫入單個字元
abstract void write(char cbuf,int off,int len)
write(string str) write(string str,int off,int len) flush() close()
特有:void newline()寫入乙個行分隔符。會根據不同作業系統,獲取不同的分隔符
bw.newline();代替bw.write("\r\n")
換行:換行符號 windows:\r\n linux:/n mac:/r
bufferedwriter bw=new bufferedwriter(new filewrite(「abc/123.txt」))
int read(int c) read(char cbuf)一次讀取多個字元,將字元讀入陣列
bufferedreader(reader in)建立乙個使用預設大小輸入緩衝區的緩衝字元輸入流
bufferedreader(reader in,int sz)指定大小
引數 reader in:字元輸入流 我們傳遞filereader,緩衝流會給它增加乙個緩衝區,提高它的讀取效率
特有:string readline()讀取乙個文字行。讀取一行資料
行的終止符號:通過下列字元之一即可認為某行已終止:換行(』\n』)、回車(』\r』)或回車後直接
跟著換行(\r\n).
返回值:包含該行內容的字串,不包含任何中支付,如果已到達流末尾,則返回null
bufferedreader br=new bufferedreader(new filereader(「abc\123.txt」))
string line;
while((line=br.readline())!=null)
br.close();
把能看懂的變成看不懂的——編碼
把看不懂的變成能看懂的——解碼inputstreamreader是位元組流通向字元流的橋梁 把位元組轉換成字元——>解碼
可以查ide預設碼表utf-8,可以查指定碼表gbk
ouputstreamreader是字元流通向位元組流的橋梁 把字元變成位元組——>編碼
可以查ide預設碼表utf-8,可以查指定碼表gbk
objectoutputstream物件的序列化流
作用:把物件以流的方式寫入到檔案中儲存
特有:void writeobject(object obj)將指定的物件寫入objectoutputstream
序列化和反序列化會丟擲notserializableexception沒有序列化異常
要實現序列化serializable介面。才能使其進行
這個介面也叫標誌型介面,等於給類新增乙個標誌,,給豬肉蓋個章
有:就可以進行序列化和反序列化
沒有:就會notserializableexception丟擲異常
objectinputstream:物件的反序列化流
作用:把檔案中儲存的物件,以流的方式讀取出來使用
特有:object readobject()從objectinputstream讀取物件
這個方法宣告丟擲classnotfoundexception(class檔案找不到異常)
當不存在物件的class檔案時丟擲此異常
反序列化的前提
1.類必須實現serializable
2.必須存在類對應的class檔案
存在class,但是修改了會產生下面
invalidclas***ception異常
序列化衝突異常
如果序列化後改變檔案,它的uid改變了
序列化與反序列化的serialversionuid不一樣
但是可以自己進行定義 static final long serialversionuid=1l
就不會發生衝突
被靜態修飾的成員變數不能被序列化,序列化的都是物件
transient關鍵字:瞬態關鍵字
被它修飾成員變數,不能被序列化
與static差不多
printstream列印流
為其他輸出流新增了功能,使他們能夠方便地列印各種資料值表示形式。
特點:1.只負責資料的輸出,不負責資料的讀取
2.與其他輸出流不同,它永遠不會丟擲ioexception
特有:print() println()
輸出任意型別的值
printstream ps=new printstream("\目的地.txt")
system.setout(ps)//把輸出語句的目的地改變為列印流的目的地
syso(「我列印在目的地」)
ps.close();
緩衝流之字元緩衝流
字元緩衝流 字元緩衝輸入流 bufferedreader 字元緩衝輸出流 bufferedwriter 完成文字資料的高效的寫入與讀取的操作 1字元緩衝輸出流 bufferedwriter void newline 根據當前的系統,寫入乙個換行符 public static void method0...
Java IO 學習筆記(緩衝流)
緩衝流 類 bufferedinputstream 和 bufferedoutputstream 實現了帶緩衝的過濾流,它提供了緩衝機制,把任意的 i o 流 到緩衝流上,可以提高 i o 流的讀取效率。在初始化時,除了要指定所連線的 i o 流之外,還可以指定緩衝區的大小。預設時是用32位元組大小...
Java之字元流 字元緩衝流
繼承關係圖 字元流 字元輸入流 reader抽象類 inputstreamreader 輸入操作的轉換流 filereader 用來操作檔案的字元輸入流 簡便的流 字元輸出流 writer抽象類 outputstreamwriter 輸出操作的轉換流 filewriter 用來操作檔案的字元輸出流 ...