1. 程式人生 > >《Java的輸入/輸出》學習筆記

《Java的輸入/輸出》學習筆記


======================================================
注:本文原始碼點此下載
======================================================

《java的輸入、輸出》學習筆記

一、file類

file類能建立、刪除和重新命名檔案和目錄,但是不能訪問檔案的內容本身。

file類可以使用檔案路徑字串來建立file例項,該檔案路徑可以是絕對路徑也可以是相對路徑。

如果在windows中路徑下包括反斜線,應該用兩條反斜線,如:f:\\abc\\test.txt 或者使用斜線也可以。

二、io流

java的io流是實現輸入/輸出的基礎,它可以方便的實現資料的輸入和輸出操作。

1、流的分類:

輸入流:讀取資料

輸出流:寫出資料

位元組流:以inputstream和outputstream作為基類

字元流:以reader和writer作為基類

節點流(低階流):從/向一個特定的io裝置(如磁碟、網路)讀/寫資料的流。直接連線資料來源,和實際的輸入/輸出節點連線。

處理流(高階流):用於對一個已存在的流進行連線或封裝,通過封裝後來實現資料讀/寫功能。

2、流的概念模型

java的io流的40多個類都是從4個抽象類派生出來的:

inputstream/reader:所有輸入流的基類

outputstream/writer:所有輸出流的基類

由於以上4個類都是抽象類,不能建立例項。

fileinputstream和filereader讀取檔案的輸入流。

fileoutputstream和filewriter寫出檔案的輸出流。

3、輸入/輸出流體系

①處理流的用法

使用處理流的典型思路:使用處理流來包裝節點流,並對外提供更加方便的輸入/輸出方法,讓程式設計師只關心高階流的操作。

識別處理流:只要流的構造引數不是一個物理節點,而是已經存在的流,那麼這個流就是處理流;

而節點流都是以物理io節點作為構造引數的。

注意:

當我們使用處理流來包裝節點流之後,關閉輸入/輸出流資源時,只要關閉最上層的處理流即可。關閉最上層的處理流時,系統會自動關閉該處理流包裝的節點流。

②輸入/輸出流體系

分類

位元組輸入流

位元組輸出流

字元輸入流

字元輸出流

抽象基類

inputstream

outputstream

reader

writer

訪問檔案

fileinputstream

fileoutputstream

filereader

filewriter

訪問陣列

bytearrayinputstream

bytearrayoutputstream

chararrayreader

chararraywriter

訪問管道

pipedinputstream

pipedoutputstream

pipedreader

pipedwriter

訪問字串

stringreader

stringwriter

緩衝流

bufferedinputstream

bufferedoutputstream

bufferedreader

bufferedwriter

轉換流

inputstreamreader

outputstreamwriter

物件流

objectinputstream

objectoutputstream

抽象基類

filterinputstream

filteroutputstream

filterreader

filewriter

列印流

printstream

推回輸入流

pushbackinputstream

pushbackreader

特殊流

datainputstream

dataoutputstream

注:斜體字標出的類代表抽象類,無法直接建立例項。以上流都位於java.io包下。

如果需要進行輸入/輸出的內容是文字內容,則應該考慮使用字元流,如果需要進行輸入/輸出的內容是二進位制內容,則應該考慮使用位元組流。

③轉換流

用於實現將位元組流轉換成字元流:

inputstreamreader:將位元組輸入流轉換成字元輸入流

outputstreamwriter:將位元組輸出流轉換成字元輸出流

bufferedreader流具有一個緩衝功能,它可以一次讀取一行文字,以換行符為標誌。由於bufferedreader具有一個readline ()方法。可以很方便的一次讀入一行內容,所以經常把讀取文字內容的輸入流包裝成bufferedreader,用以方便的讀取輸入流的文字內容。

三、randomaccessfile

randomaccessfile是java輸入/輸出流體系中功能最豐富的檔案內容訪問類,它提供了眾多方法來訪問檔案內容,它既可以讀取檔案內容,又可以向檔案輸出資料。與普通輸入/輸出流不同的是,randomaccessfile支援“隨機訪問”的方式,程式可直接跳轉到檔案的任意地方來讀寫資料。

因為randomaccessfile可以自由訪問檔案的任意位置,所以如果我們希望只訪問檔案的部分內容,而不是把檔案從頭讀到尾,使用randomaccessfile將是更好的選擇。

如果需要向已存在的檔案後追加內容,則應該使用randomaccessfile

randomaccessfile依然不能向檔案的指定位置插入內容,如果直接將檔案記錄指標移動到中間某位置後開始輸出,則新輸入的內容會覆蓋檔案中原有的內容。如果需要向指定位置插入內容,程式需要把插入點後面的內容讀入緩衝區,等把需要插入的資料寫入檔案後,再將緩衝區的內容追加到檔案後面。


======================================================
在最後,我邀請大家參加新浪APP,就是新浪免費送大家的一個空間,支援PHP+MySql,免費二級域名,免費域名繫結 這個是我邀請的地址,您通過這個連結註冊即為我的好友,並獲贈雲豆500個,價值5元哦!短網址是http://t.cn/SXOiLh我建立的小站每天訪客已經達到2000+了,每天掛廣告賺50+元哦,呵呵,飯錢不愁了,\(^o^)/