JAVA I/O輸入輸出流詳解
阿新 • • 發佈:2019-02-11
以Unicode字元為導向的stream,表示以Unicode字元為單位從stream中讀取或往stream中寫入資訊。
區別:
Reader和Writer要解決的,最主要的問題就是國際化。原先的I/O類庫只支援8位的位元組流,因此不可能很好地處理16位的Unicode字元流。Unicode是國際化的字符集(更何況Java內建的char就是16位的Unicode字元),這樣加了Reader和Writer之後,所有的I/O就都支援Unicode了。此外新類庫的效能也比舊的好。
但是,Read和Write並不是取代InputStream和OutputStream,有時,你還必須同時使用"基於byte的類"和"基於字元的類"。為此,它還提供了兩個"介面卡(adapter)"類。InputStreamReader負責將InputStream轉化成Reader,而OutputStreamWriter則將OutputStream轉化成Writer。
4,InputStream類
inputstream類和outputstream類都為抽象類,不能建立物件,可以通過子類來例項化。
InputStream是輸入位元組資料用的類,抽象了應用程式讀取資料的方式.Inputstream類中的常用方法:
1)public abstract int read( ):讀取一個byte的資料,返回值是高位補0的int型別值。
2)public int read(byte b[ ]):讀取b.length個位元組的資料放到b陣列中。該方法實際上是呼叫下一個方法實現的
3)public int read(byte b[ ], int off, int len):從輸入流中最多讀取len個位元組的資料,存放到偏移量為off的b陣列中。
4)public int available( ):返回輸入流中可以讀取的位元組數。
5)public long skip(long n):忽略輸入流中的n個位元組,返回值是實際忽略的位元組數, 跳過一些位元組來讀取。
6)public int close( ) :我們在使用完後,必須對我們開啟的流進行關閉.。
5,OutputStream類
OutputStream抽象了應用程式寫出資料的方式,提供了3個write方法來做資料的輸出,這個是和InputStream是相對應的。
1) public void write(byte b[ ]):將引數b中的位元組寫到輸出流。
2) public void write(byte b[ ], int off, int len) :將引數b的從偏移量off開始的len個位元組寫到輸出流。
3) public abstract void write(int b) :先將int轉換為byte型別,把低位元組寫入到輸出流中。
4) public void flush( ) : 將資料緩衝區中資料全部輸出,並清空緩衝區。
5) public void close( ) : 關閉輸出流並釋放與流相關的系統資源。
6,FileInputStream類
FileInputStream類是InputStream類的子類,能夠具體實現在檔案上讀取資料。使用方法:
方式1:
File fin=new File("d:/ab.txt");
FileInputStream in=new FileInputStream(fin);
方式2:
FileInputStream in=new
FileInputStream("d: /ab.txt");
方式3:
建構函式將 FileDescriptor()物件作為其引數。
FileDescriptor() fd=new FileDescriptor();
FileInputStream f2=new FileInputStream(fd);
7,FileOutputStream類
FileOutputStream是OutputStream的一個重要子類,能夠具體實現向檔案中寫出byte資料。
建立檔案流物件的方法:
方式1:
File f=new File("d:/abc.txt");
FileOutputStream out=new FileOutputStream (f);
方式2:
FileOutputStream out=new
FileOutputStream("d:/abc.txt");
方式3:建構函式將 FileDescriptor()物件作為其引數。
FileDescriptor() fd=new FileDescriptor();
FileOutputStream f2=new FileOutputStream(fd);
方式4:建構函式將檔名作為其第一引數,將布林值作為第二引數,表示若有此檔案則內容追加。
區別:
Reader和Writer要解決的,最主要的問題就是國際化。原先的I/O類庫只支援8位的位元組流,因此不可能很好地處理16位的Unicode字元流。Unicode是國際化的字符集(更何況Java內建的char就是16位的Unicode字元),這樣加了Reader和Writer之後,所有的I/O就都支援Unicode了。此外新類庫的效能也比舊的好。
但是,Read和Write並不是取代InputStream和OutputStream,有時,你還必須同時使用"基於byte的類"和"基於字元的類"。為此,它還提供了兩個"介面卡(adapter)"類。InputStreamReader負責將InputStream轉化成Reader,而OutputStreamWriter則將OutputStream轉化成Writer。
4,InputStream類
inputstream類和outputstream類都為抽象類,不能建立物件,可以通過子類來例項化。
InputStream是輸入位元組資料用的類,抽象了應用程式讀取資料的方式.Inputstream類中的常用方法:
1)public abstract int read( ):讀取一個byte的資料,返回值是高位補0的int型別值。
2)public int read(byte b[ ]):讀取b.length個位元組的資料放到b陣列中。該方法實際上是呼叫下一個方法實現的
3)public int read(byte b[ ], int off, int len):從輸入流中最多讀取len個位元組的資料,存放到偏移量為off的b陣列中。
4)public int available( ):返回輸入流中可以讀取的位元組數。
5)public long skip(long n):忽略輸入流中的n個位元組,返回值是實際忽略的位元組數, 跳過一些位元組來讀取。
6)public int close( ) :我們在使用完後,必須對我們開啟的流進行關閉.。
5,OutputStream類
OutputStream抽象了應用程式寫出資料的方式,提供了3個write方法來做資料的輸出,這個是和InputStream是相對應的。
1) public void write(byte b[ ]):將引數b中的位元組寫到輸出流。
2) public void write(byte b[ ], int off, int len) :將引數b的從偏移量off開始的len個位元組寫到輸出流。
3) public abstract void write(int b) :先將int轉換為byte型別,把低位元組寫入到輸出流中。
4) public void flush( ) : 將資料緩衝區中資料全部輸出,並清空緩衝區。
5) public void close( ) : 關閉輸出流並釋放與流相關的系統資源。
6,FileInputStream類
FileInputStream類是InputStream類的子類,能夠具體實現在檔案上讀取資料。使用方法:
方式1:
File fin=new File("d:/ab.txt");
FileInputStream in=new FileInputStream(fin);
方式2:
FileInputStream in=new
FileInputStream("d: /ab.txt");
方式3:
建構函式將 FileDescriptor()物件作為其引數。
FileDescriptor() fd=new FileDescriptor();
FileInputStream f2=new FileInputStream(fd);
7,FileOutputStream類
FileOutputStream是OutputStream的一個重要子類,能夠具體實現向檔案中寫出byte資料。
建立檔案流物件的方法:
方式1:
File f=new File("d:/abc.txt");
FileOutputStream out=new FileOutputStream (f);
方式2:
FileOutputStream out=new
FileOutputStream("d:/abc.txt");
方式3:建構函式將 FileDescriptor()物件作為其引數。
FileDescriptor() fd=new FileDescriptor();
FileOutputStream f2=new FileOutputStream(fd);
方式4:建構函式將檔名作為其第一引數,將布林值作為第二引數,表示若有此檔案則內容追加。