1. 程式人生 > >字節輸入流:io包中的InputStream為所有字節輸入流的父類。

字節輸入流:io包中的InputStream為所有字節輸入流的父類。

ech 系統 int data ava 編寫 方便 access 空間

字節輸入流:io包中的InputStream為所有字節輸入流的父類。

Int read();讀入一個字節(每次一個);

可先使用new byte[]=數組,調用read(byte[] b)

read (byte[])返回值可以表示有效數;read (byte[])返回值為-1表示結束。

字節輸出流:io包中的OutputStream位所有字節輸入流的父類。

Write和輸入流中的read相對應。

在流中close()方法由程序員控制。因為輸入輸出流已經超越了VM的邊界,所以有時可能無法回收資源。

原則:凡是跨出虛擬機邊界的資源都要求程序員自己關閉,不要指望垃圾回收。

以Stream結尾的類都是字節流。

如果構造FileOutputStream的同時磁盤會建立一個文件。如果創建的文件與磁盤上已有的文件名重名,就會發生覆蓋。

用FileOutputStream中的boolean,則視,添加情況,將數據覆蓋重名文件還是將輸入內容放在文件的後面。(編寫程序驗證)

DataOutputStream:輸入數據的類型。

因為每中數據類型的不同,所以可能會輸出錯誤。

所有對於:DataOutputStream

DataInputStream

兩者的輸入順序必須一致。

過濾流:

bufferedOutputStream

bufferedInputStream

用於給節點流增加一個緩沖的功能。
在VM的內部建立一個緩沖區,數據先寫入緩沖區,等到緩沖區的數據滿了之後再一次性寫出,效率很高。

使用帶緩沖區的輸入輸出流的速度會大幅提高,緩沖區越大,效率越高。(這是典型的犧牲空間換時間)

切記:使用帶緩沖區的流,如果數據數據輸入完畢,使用flush方法將緩沖區中的內容一次性寫入到外部數據源。用close()也可以達到相同的效果,因為每次close都會使用flush。一定要註意關閉外部的過濾流。

(非重點)管道流:也是一種節點流,用於給兩個線程交換數據。

PipedOutputStream

PipedInputStream

輸出流:connect(輸入流)

RondomAccessFile類允許隨機訪問文件

GetFilepoint()可以知道文件中的指針位置,使用seek()定位。

Mode(“r”:隨機讀;”w”:隨機寫;”rw”:隨機讀寫)

練習:寫一個類AJAVA A file1 file2

file1要求是系統中已經存在的文件。File2是還沒有存在的文件。

執行完這個命令,那麽file2就是file1中的內容。

字符流:reader\write只能輸純文本文件。

FileReader類:字符文件的輸出

字節流與字符流的區別:

字節流的字符編碼:

字符編碼把字符轉換成數字存儲到計算機中,按ASCii將字母映射為整數。

把數字從計算機轉換成相應的字符的過程稱為解碼。

編碼方式的分類:

ASCII(數字、英文):1個字符占一個字節(所有的編碼集都兼容ASCII

ISO8859-1(歐洲):1個字符占一個字節

GB-2312/GBK1個字符占兩個字節

Unicode: 1個字符占兩個字節(網絡傳輸速度慢)

UTF-8:變長字節,對於英文一個字節,對於漢字兩個或三個字節。

原則:保證編解碼方式的統一,才能不至於出現錯誤。

Io包的InputStreamread稱為從字節流到字符流的橋轉換類。這個類可以設定字符轉換方式。

OutputStreamred:字符到字節

Bufferreadreadline()使得字符輸入更加方便。

I/O流中,所有輸入方法都是阻塞方法。

Bufferwrite給輸出字符加緩沖,因為它的方法很少,所以使用父類printwrite,它可以使用字節流對象,而且方法很多。

練習:做一個記事本

swing/JfileChoose: getSelect file()

InputStreeamReader:把字節變為字符

JAVA中對字符串長無限制 bufferedReaderir

字節輸入流:io包中的InputStream為所有字節輸入流的父類。