【正文】
ic Writer append(CharSequence csq, int start, int end) ? FileReader類是一個(gè)以字符方式讀取文件內(nèi)容的Reader類的子類。 關(guān)閉文件 ? 見程序 ? ByteArrayInputStream ? ByteArrayOutputStream ? SequenceInputStream ? PushbackInputStream 主要內(nèi)容 I/O流的概念和劃分 文件的操作 字節(jié)流處理 字符流處理 串行化 字符流處理 ? Reader/Writer ? 文件字符流 ? 字節(jié)流和字符流的轉(zhuǎn)化 Reader/Writer ? Reader是定義 Java的字符流輸入模式的抽象類。 ? 其中, file識(shí)別文件路徑, mode指定參數(shù)訪問模式: r表示讀, w表示寫, rw表示讀寫。 ? BufferedOutputStream(OutputStream output) ? BufferedOutputStream(OutputStream output, int bufSize) ? 具體見程序 隨機(jī)存取文件 ? 對(duì)于 InputStream和 OutputStream,他們都是順序訪問流,從頭至尾訪問流,并且輸入流只能讀,不能寫,輸出流只能寫,不能讀,即對(duì)一個(gè)文件不能同時(shí)進(jìn)行讀寫。 ? 見程序: 文件拷貝 過濾流 ? 過濾流在讀 /寫數(shù)據(jù)的同時(shí)可以對(duì)數(shù)據(jù)進(jìn)行處理,它提供了同步機(jī)制,使得某一時(shí)刻只有一個(gè)線程可以訪問一個(gè) I/O流,以防止多個(gè)線程同時(shí)對(duì)一個(gè) I/O流進(jìn)行操作所帶來的意想不到的結(jié)果。 ? FileInputStream f2 = new FileInputStream(f)。 } 文件字節(jié)流 ? InputStream和 OutputStream都是抽象類,不能實(shí)例化,因此在實(shí)際應(yīng)用中都使用的是他們的子類。 //調(diào)整日期 (, 2)。 (a + b)。 ? PrintStream類進(jìn)行了擴(kuò)充,支持?jǐn)?shù)據(jù)的格式化輸出,增加了 printf()方法。 ? Java通過系統(tǒng)類 System實(shí)現(xiàn)標(biāo)準(zhǔn)輸入輸出的功能,定義了 3個(gè)流變量, in, out和 err。它的通常形式如下: ? boolean accept(File path)??梢允褂?File類的下述三個(gè)方法,列出指定類型的文件。當(dāng)你創(chuàng)建一個(gè) File 對(duì)象且它是目錄時(shí),isDirectory( ) 方法返回 ture。 File對(duì)象的構(gòu)造 ? File(String path) ? File(String dir, String filename) ? File(File dir, String filename) ? File(URI uri) File f1 = new File(D:/Java)。 } } } 字節(jié)流輸入類 I n p u t S t r e a mF i l e I n p u t S t r e a mB y t e A r r a y I n p u t S t r e a mF i l t e r I n p u t S t r e a m P i p e d I n p u t S t r e a mO b j e c t I n p u t S t r e a mS e q u e n c e I n p u t S t r e a mB u f f e r e d I n p u t S t r e a mC i p h e r I n p u t S t r e a mD a t a I n p u t S t r e a mD i g e s t I n p u t S t r e a mP r o g r e s s M o n i t o r I n p u tS t r e a mP u s h b a c k I n p u t S t r e a mA u d i o I n p u t S t r e a m字節(jié)輸出類 O u t p u t S t r e a mF i l e O u t p u t S t r e a mB y t e A r r a y O u t p u t S t r e a m F i l t e r O u t p u t S t r e a mO b j e c t O u t p u t S t r e a mP i p e d O u t p u t S t r e a mB u f f e r e d O u t p u t S t r e a m C i p h e r O u t p u t S t r e a mD a t a O u t p u t S t r e a mD i g e s t O u t p u t S t r e a mP r i n t S t r e a m字符輸入流類 R e a d e rB u f f e r e d R e a d e rC h a r A r r a y R e a d e rF i l t e r R e a d e rI n p u t S t r e a m R e a d e rP i p e d R e a d e rS t r i n g R e a d e rF i l e R e a d e rL i n e N u m b e r R e a d e rP u s h b a c k R e a d e r字符輸出流 W r i t e rB u f f e r e d W r i t e rO u t p u t S t r e a m W r i t e rC h a r A r r a y W r i t e rF i l t e r W r i t e rP i p e d W r i t e rP r i n t W r i t e rS t r i n g W r i t e rF i l e W r i t e r主要內(nèi)容 I/O流的概念和劃分 文件的操作 字節(jié)流處理 字符流處理 串行化 文件的操作 ? File類:對(duì)文件的引用和表示 ? File類提供了一些方法來操縱文件和獲取文件的信息。 BufferedReader in。 ? 當(dāng)你構(gòu)造一個(gè) InputStreamReader或OutputStreamWriter時(shí),轉(zhuǎn)換規(guī)則定義了 16位Unicode和其它平臺(tái)的特定表示之間的轉(zhuǎn)換。這些 16位版本的流稱為讀者Reader和作者 Writer。 int b。 int b。 例 91: 下面的程序?qū)崿F(xiàn)文件內(nèi)容的顯示。它們已經(jīng)被后面所討論的讀者和作者所取代。類DataInputStream、 DataOutputStream和 RandomAccessFile分別實(shí)現(xiàn)了這兩個(gè)接口。 BufferInputStream bi=new BufferInputStream(infile)。 FileOutputStream outfile =new FileOutputStream()。這些類的構(gòu)造函數(shù)允許你指定它們所連接的文件。這個(gè)關(guān)閉操作會(huì)關(guān)閉其余的流。 這些方法寫輸出流。該方法的屬性為 abstract,必須為子類所實(shí)現(xiàn)。mark(int)方法用來指明應(yīng)當(dāng)標(biāo)記流的當(dāng)前點(diǎn)和分配一個(gè)足夠大的緩沖區(qū),它最少可以容納參數(shù)所指定數(shù)量的字符。從該位置開始讀取 readlimit所指定的數(shù)據(jù)后,標(biāo)記失 效。在這個(gè)調(diào)用之后的實(shí)際讀操作可能返回更多的字節(jié)數(shù)。 ? 4. void close() 你完成流操作之后,就關(guān)閉這個(gè)流。 這三個(gè)方法提供對(duì)輸入管道數(shù)據(jù)的存取。 Java流的劃分 ? 字節(jié)流類 ? 處理字節(jié)的輸入和輸出提供了方便的方法 ? 字符流類 ? 為字符的輸入和輸出處理提供了方便 ? 讀寫數(shù)據(jù)的單位不同 ? 最主要的是 Read() 和 Write() 方法 ? 每個(gè)流的特點(diǎn) InputStream ? 1. int read() 從輸入流中讀取下一個(gè)字節(jié),返回范圍在 0到 255之間的一個(gè)整數(shù),該方法的屬性為 abstract,必須為子類所實(shí)現(xiàn)。它們采用了統(tǒng)一的編碼標(biāo)準(zhǔn),因而可以國(guó)際化。 ? Java 2 定義了兩種類型的流:字節(jié)類和字符類。這樣,相同的輸入 /輸出類和方法適用于所有類型的外部設(shè)備。流通過 Java的輸入 /輸出系統(tǒng)與 物理設(shè)備 鏈接。 ? Java程序通過流來完成輸入 /輸出。盡管與它們鏈接的物理設(shè)備不盡相同,所有流的行為具有同樣的方式。流是處理輸入 /輸出的一個(gè)簡(jiǎn)便的方法。字符流( character stream)為字符的輸入和輸出處理提供了方便。基于字符的流只為處理字符提供方便有效的方法。 對(duì)于以上方法,如果到達(dá)流的末尾位置,則返回 1表明流的結(jié)束。 第三個(gè)方法中的兩個(gè) int參數(shù)指定了所要填入的數(shù)組的子范圍。 ? 5. int available() 這個(gè)方法報(bào)告立刻可以從流中讀取的字節(jié)數(shù)。 ? 8. void mark(int) 在輸入流的當(dāng)前讀取位置作標(biāo)記。如果 mark()和 reset()方法可以在特定的流上操作,則 markSupported()方法將返回 true。 OutputStream ? 1. void write(int) 將指定的字節(jié) b寫入輸出流。 ? 3. void write(byte b[], int off, int len) 把字節(jié)數(shù)組 b中從索引 off開始的 len個(gè)字節(jié)寫入輸出流。如果你有一個(gè)流所組成的棧,就關(guān)閉棧頂部的流。 ? FileInputStream和 FileOutputStream ? 這些類是結(jié)點(diǎn)流,而且正如這個(gè)名字所暗示的那樣,它們使用磁盤文件。 FileInputStream infile =new FileInputStream()。 下面舉例: ? BufferInputStream和 BufferOutputStream ? 這些是過濾器流,它們可以提高 I/O操作的效率。 ? DataInputStream和 DataOutputStream 一個(gè)類實(shí)現(xiàn)接口 Datalnput和 DataOutput中定義的方法后,就可以用與機(jī)器無關(guān)的格式讀 /寫 Java的基本類型數(shù)據(jù)。 ? 這些流都有讀寫字符串的方法,但不應(yīng)當(dāng)使用這些方法。要使管道流有用,必須有一個(gè)輸入方和一個(gè)輸出方。 BufferedInputStream bfis=new BufferedInputStream(fis)。 } } // class BufferedInputDemo { public static void main(String args[]) { BufferedInputStream bis = new BufferedInputStream( new FileInputStream(“”))。 } }} Unicode ? Java技術(shù)使用 Unicode來表示字符串和字符,而且它提供了 16位版本的流,以便用類似的方法來處理字符。這些類用來作為字節(jié)流與讀者和作者之間的接口。 InputStreamReader ir。 while ((s = ()) != null) { (Read: + s)。通過 File類的方法,可以得到文件或者目錄的描述信息,包括名稱、所在路徑、讀寫性、長(zhǎng)度等,還可以創(chuàng)建目錄、創(chuàng)建文件,改變文件名、刪除文件、列出目錄中的文件等。 File f4 = new File( File類的方法 ? boolean canRead()測(cè)試文件是否可讀 ? boolean delete()刪除文件 ? File getAbsoluteFile()返回絕對(duì)文件名 ? File getAbsoluteFile()返回絕對(duì)文件名 ? boolean isDirectory()是否是目錄 ? long lastModified()上次修改時(shí)間,從 1970年 1月 1號(hào)開始的標(biāo)準(zhǔn)時(shí)間 (UTC)的毫秒數(shù) ? 具體見程序例子 :File的使用 目錄的操作 ? 目錄是一個(gè)包含其他文件和路徑列表的 File 類。 ? 參考例子 過濾文件 ? 我們有時(shí)需要列出目錄下指定類型的文件,比如 .java、 .class等擴(kuò)展名的文件。它的通常形式如下: ? boolean accept(File directory, String filename) ? FileFilter只定義了一個(gè) accept( )方法,該方法被列表中的每個(gè)文件調(diào)用一次。 ? 見程序 標(biāo)準(zhǔn)輸入輸出對(duì)象 ?