io流,檔案操作類
一、感性認知:
2、沒有可替代方案。
二、理性認知:
1、file類
a、可讀可寫可執行判斷
b、建立檔案
c、建立資料夾
d、批量建立資料夾
e、刪除檔案/資料夾 (也可以指定在虛擬機器退出時刪除)
f、判斷是否為乙個目錄
g、判斷是否為乙個檔案
h、得到檔案的修改時間
i、返回檔案的長度
j、返回當前碟符大小
k、返回當前碟符可分配空間
l、重新命名檔案/資料夾
m、返回當前目錄下的所有檔案/資料夾
n、判斷當前檔案物件路徑是否為絕對路徑
o、判斷兩個file物件封裝的路徑是否為同乙個路徑。
p、建立臨時資料夾createnewtempfile
q、得到乙個file物件所封裝路徑的string或file
r、判斷file物件所封裝的抽象路徑名是否存在 exists()
2、輸入輸出流
a、輸入流
位元組流inputstream[ac]
fileinputstream[c]
filterinputstream[c]
bufferedinputstream[c]
字元流reader[ac]
inputstreamreader[c]
filereader[c]
bufferedreader[c]
b、輸出流
位元組流outputstream[ac]
bytearrayoutputstream[c]
fileoutputstream[c]
filteroutputstream[c]
bufferedoutputstream[c]
printstream[c]
字元流writer[ac]
outputstreamwriter[c]
filewriter[c]
bufferedwriter[c]
1,system.in本質是乙個inputstream
2,system.out本質是乙個printstream
3,printstream
a,print:將資料寫入到輸出流,輸出流將資料寫入到繫結的目標中(控制台,記事本)
c,println:表示將資料輸出到制定和目標後,新增換行符
d,printf:支援格式化資料輸出
4,bytearrayoutputstream
(具體案例,見**:ioutils)
3、檔案的拷貝(見**)
a、輸入流:將待拷貝檔案分批讀取到記憶體中
b、輸入流:將分批讀取到記憶體中的待拷貝檔案的部分資料,一次次寫入到新檔案中。
4、細節討論
a、fileoutputstream.write(readbytes, 0, curlength);
寫入操作,每次寫入的內容為:當前位元組陣列的0偏移量值,此次讀取位元組數的長度。
b、write/flush的細節(flush方法,即為:清空當前「流」中緩衝區資料到指定位置)
輸出流每當緩衝區已滿,會自動執行flush方法,將輸出流中的資料寫入到指 定位置,如果最後一次輸出流緩衝區沒有寫滿,則不會自動執行flush,那麼
需要手動執行flush方法,將流中的緩衝區的資料寫入到指定位置。
可以指定緩衝區的大小,或者可使用預設的大小。大多數情況下,預設值就足夠大了
care:inputstreamreader 是位元組流通向字元流的橋梁:它使用指定的
charset
讀取位元組並將其解碼為字元。它使用的字符集可以由名稱指定或顯式給定,或者可以接受平台預設的字符集
bufferedreader 從字元輸入流中讀取文字,緩衝各個字元,從而實現字元、陣列和行的高效讀取。
fileinputstream 從檔案系統中的某個檔案中獲得輸入位元組。哪些檔案可用取決於主機環境。
fileinputstream 用於讀取諸如影象資料之類的原始位元組流。要讀取字元流,請考慮使用
filereader。
string(byte byte,int start,int length);如果byte陣列指定長度12,但只儲存10個位元組,那麼這裡的length最多為10,這樣一理解超簡單,之前一直不懂。api中是這樣說的通過使用平台的預設字符集解碼指定的 byte 子陣列,構造乙個新的
string
。新 string
的長度是字符集的函式,因此可能不等於該子陣列的長度。當給定 byte 在給定字符集中無效的情況下,此構造方法的行為沒有指定。如果需要對解碼過程進行更多控制,則應該使用
charsetdecoder類。
對檔案進行操作:fileinputstream(位元組輸入流),fileoutputstream(位元組輸出流),filereader(字元輸入流),filewriter(字元輸出流)
對管道進行操作:pipedinputstream(位元組輸入流),pipedoutstream(位元組輸出流),pipedreader(字元輸入流),pipedwriter(字元輸出流)
pipedinputstream的乙個例項要和pipedoutputstream的乙個例項共同使用,共同完成管道的讀取寫入操作。主要用於執行緒操作。
位元組/字元陣列:bytearrayinputstream,bytearrayoutputstream,chararrayreader,chararraywriter是在記憶體中開闢了乙個位元組或字元陣列。
buffered緩衝流::bufferedinputstream,bufferedoutputstream,bufferedreader,bufferedwriter,是帶緩衝區的處理流,緩衝區的作用的主要目的是:避免每次和硬碟打交道,提高資料訪問的效率。
因為平時若是我們輸出乙個8個位元組的long型別或4個位元組的float型別,那怎麼辦呢?可以乙個位元組乙個位元組輸出,也可以把轉換成字串輸出,但是這樣轉換費時間,若是直接輸出該多好啊,因此這個資料流就解決了我們輸出資料型別的困難。資料流可以直接輸出float型別或long型別,提高了資料讀寫的效率。
使用物件流需要實現serializable介面,否則會報錯。而若用transient關鍵字修飾成員變數,不寫入該成員變數,若是引用型別的成員變數為null,值型別的成員變數為0.
java的IO流 字元流
reader 是所有的輸入字元流的父類,它是乙個抽象類。reader 中各個類的用途和使用方法基本和inputstream 中的類使用一致。後面會有reader 與inputstream 的對應關係。1 看看幾個常用的實現類 該類從資料來源讀取位元組並將其解碼為使用指定的字符集的字元。inputst...
java的IO流總結
io流即輸入輸出流,流是一組有順序的,有起點和終點的位元組結合,是對資料傳輸的總稱。即資料在兩裝置間的傳輸稱為流,流的本質是資料傳輸。按照資料流的方向可分為 輸入流和輸出流 按照處理資料單位不同可以分為 位元組流和字元流。給出相應的io結構圖 1.io流之fileinputstream和fileou...
Java中的IO流之字元流
看完了位元組流 接下來我們來了解一下字元流 字元流字元流是可以直接讀寫字元的io流,用字元流來讀取字元時,先讀取到位元組資料,然後轉為字元。寫出字元時,需要把字元轉為位元組再寫出。還是上 吧 filereader filereader 類中的 read 方法可以按照字元大小讀取 這樣就把文字中的文字...