1. 程式人生 > >Android檔案IO詳解

Android檔案IO詳解

 首先讓我們回顧一下

JavaIO。看圖:



 

看到這麼多流,是不是頭都大了,當年我學這塊的時候,心想什麼玩意,這流那流的。什麼時候該用什麼流?輸入流和輸出流經常弄混,不知道什麼時候該用輸出?什麼時候該用輸入?接下來看圖 :

上面這張圖說明了最基本的輸入,輸出。當然我們的資料來源方向不一定只有檔案,或許是記憶體或者網路。接下來說一下什麼是位元組流,字元流。



 

 

 

 

 

 

說白了節點流就是連線程式與資料來源的一個管子,單純的用來傳送資料,並不對資料進行額外處理。而處理流是對一個已存在的流的連線和封裝,通過所封裝的流的功能呼叫實現資料的讀寫,如BufferedReader,。說白了處理流就是在管子外面又套了一層,對水進行了過濾或者消毒。對資料進行了額外的處理,增強了額外的傳輸功能。處理流的構造方法總是要帶一個其他的流物件做引數。

常用的節點流

父 類  InputStream OutputStream Reader Writer

文 件  FileInputStream FileOutputStrean FileReader FileWriter 檔案進行處理的節點流

數 組  ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter 對陣列進行處理的節點流(對應的不再是檔案,而是記憶體中的一個數組)

字串 StringReader StringWriter 對字串進行處理的節點流

管 道  PipedInputStream PipedOutputStream PipedReader PipedWriter 對管道進行處理的節點流

常用處理流(關閉處理流使用關閉裡面的節點流)

父 類  InputStream OutputStream Reader Writer

緩衝流 BufferedImputStrean BufferedOutputStream BufferedReader BufferedWriter ----需要父類作為引數構造,增加緩衝功能,避免頻繁讀寫硬碟,可以初始化緩衝資料的大小,由於帶了緩衝功能,所以就寫資料的時候需要使用flush方法

轉換流 InputStreamReader OutputStreamWriter- 要inputStream或OutputStream作為引數,實現從位元組流到字元流的轉換

資料流 DataInputStream DataOutputStream -提供將基礎資料型別寫入到檔案中,或者讀取出來,為什麼要有這個流呢?看這樣的分析,如果沒有這種流的話,有一個long,本身只佔8個位元組,如果我要寫入到檔案,需要轉成字串,然後在轉成字元陣列,那空間會佔用很多,但是有了這種流之後就很方便了,直接將這8個位元組寫到檔案就完了。。是不是既節約了記憶體空間有讓程式寫起來更加方便簡單了吶。寫倒是很簡單,但是讀取的時候就注意了,根據讀取的資料型別,指標會往下移,所以你寫的順序必須要和讀的順序一致才能完成你正確的需求。