進入第八篇,我們開始討論JAVA的IO初步。在JAVA程序中,對數據的輸入/輸出操作以"流"(stream)方式進行,J2SDK提供了各種各樣的"流"類,用于獲取不同種類的數據,程序中通過標準的方法輸入和輸出數據。
1、輸入、輸出流的分類:
java.io包中定義了多個流類型(類或抽象類)來實現輸入和輸出功能;可以從不同的角度對其進行分類:
按數據流的方向不同可以分為輸入、輸出流
按處理數據的單位不同分為字節流和字符流
按照功能不同分為可以分為字節流和處理流
J2SDK提供的所有流類型位于包java.io內分別繼承至一下四種抽象流類型:

2、節點流和處理流:
節點流為可以從一個特定的數據源(節點)讀取數據(文本,內存)
處理流是連接在已存在的流(節點流和處理流)之上,通過對數據的處理為程序通過更加強大的讀寫功能。
3、InputStream和OutputStream:
繼承自InputStream的流都是用于向程序中輸入數據,且數據單位為字節;
繼承自OutputStream的流都是用于向程序輸出數據,且數據單位為字節。
注意:這里本篇提到的輸入和輸出都是相對于程序而言的。
4、InputStream常用方法:
int read():讀取一個字節并以整數的形式返回,如果返回值為-1表示讀取完成
int read(byte[] buffer):讀取一系列的字節并保存到buffer字節數組中,返回值為實際讀取的字節數
int read(byte[] buffer, int offset, int length):讀取length個字節,并保存到buffer字節數組中,從offset位置開始存儲,返回值為實際讀取的字節數
void close():關閉流釋放內存資源
long skip(long n):跳過n個字節不讀,返回實際跳過的字節數。
5、OutputStream常用方法;
void write(int b):向輸出流中寫入一個字節的數據該字節數據為參數b的低8位。
void write(byte[] buffer):將一個字節類型的數組型寫入到輸出流中
void write(byte[] buffer, int off, int len):將一個字節類型的數組中的從指定位置(off)開始的,len個字節寫入到輸出流
void close():關閉流釋放內存資源
void flush():將輸出流中緩存的數據全部寫出到目的地
6、InputStream和OutputStream使用實例:
public class input_output { public static void main(String [] args){ try { FileOutputStream out = new FileOutputStream("E://JAVA源代碼//JAVASE//text.txt"); for(int i = 1; i<5000; i++){ out.write(i); } FileInputStream input = new FileInputStream("E://JAVA源代碼//JAVASE//text.txt"); int j = 0; while((j=input.read())!=-1){ System.out.PRintln(j); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}7、Reader和Writer:
繼承自Reader的流都是用于向程序中輸入數據,且數據單位為字符;
繼承自Writer的流都是用于向程序輸出數據,且數據單位為字符。
8、Reader和Writer的常用方法:
方法名與InputStream和OutputStream的常用方法名相同,只不過處理的單位變成了字節,請查閱上面的總結自行學習。
9、節點流類型:

10、處理流類型:

11、節點流與處理流的區別:
節點流是直接與文件接觸的一種流,是最基本的流,而處理流就如包裹在節點流之上的一種流,目的是更好的完成輸入和輸出。
12、緩沖流:
緩存流要套接在相應的節點流之上,對讀寫數據提供緩沖的功能,提高了讀寫的效率,同時增加了一些新方法。J2SDK提供了四種緩存流,其常用的構造方法:

增加的比較便利的新方法有:

13、轉換流:

14、數據流:

15、print流:

對于JAVA中流的總結就為大家奉獻到這里,下一篇JAVA線程初步。
|
新聞熱點
疑難解答