IO流之OutputStream詳解

字節流寫出

OutputStream抽象類

  • 此抽象類是表示輸出字節流的所有類的超類。輸出流接受輸出字節並將這些字節發送到某個接收器。
  • 常用方法:

>void close() 
>           關閉此輸出流並釋放與此流有關的所有系統資源。 
> 
>void flush() 
>           刷新此輸出流並強制寫出所有緩衝的輸出字節。 
> 
>void write(byte[] b) 
>           將 b.length 個字節從指定的 byte 數組寫入此輸出流。 
>           
>void write(byte[] b, int off, int len) 
>           將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此輸出流。 
> 
> abstract  void write(int b) 
>           將指定的字節寫入此輸出流。

FileOutputStream子類

  • 直接插在文件上,直接寫出文件數據

創建對象:

  • FileOutputStream(String name)
    創建一個向具有指定名稱的文件中寫入數據的輸出文件流。
  • FileOutputStream(File file)
    創建一個向指定 File 對象表示的文件中寫入數據的文件輸出流。
  • FileOutputStream(File file, boolean append) –追加
    創建一個向指定 File 對象表示的文件中寫入數據的文件輸出流。

BufferedOutputStream子類

  • 該類實現緩衝的輸出流。通過設置這種輸出流,應用程序就可以將各個字節寫入底層輸出流中,而不必針對每次字節寫入調用底層系統。

創建對象

  • BufferedOutputStream(OutputStream out)
  • 創建一個新的緩衝輸出流,以將數據寫入指定的底層輸出流。

字符流寫出

Writer抽象類: 寫入字符流的抽象類。

常用方法:
  • void write(char[] cbuf)
    寫入字符數組。
  • abstract void write(char[] cbuf, int off, int len)
    寫入字符數組的某一部分。
  • void write(int c)
    寫入單個字符。
  • void write(String str)
    寫入字符串。
  • void write(String str, int off, int len)
    寫入字符串的某一部分。
  • abstract void close()
    關閉此流,但要先刷新它。

OutputStreamWriter子類

OutputStreamWriter,是字符流通向字節流的橋樑:可使用指定的 charset 將要寫入流中的字符編碼成字節。它使用的字符集可以由名稱指定或顯式給定,否則將接受平臺默認的字符集。

創建對象:

  • OutputStreamWriter(OutputStream out, String charsetName)
    創建使用指定字符集的 OutputStreamWriter。
  • OutputStreamWriter(OutputStream out)
    創建使用默認字符編碼的 OutputStreamWriter。
public class rr {
       public static void main(String[] args) throws Exception {
//           method1();//字節寫出
              method2();//字符寫出
       } 
       private static void method2() throws Exception {
              Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("D:\\\\teach\\\\a.txt"))                                                                                                                                                                                            , "utf-8"));
              long s = System.currentTimeMillis();
              for(int i = 48 ; i < 1000000; i++) {
                     out.write(i);
              }
              s = System.currentTimeMillis() - s;
              System.out.println(s + "--");//266               
              out.close();
       } 
       private static void method1() throws Exception {
              long s = System.currentTimeMillis();
              OutputStream out = new FileOutputStream(new File("D:\\teach\\a.txt"));
              for(int i = 48 ; i < 1000000; i++) {
                     out.write(i);
              }
              s = System.currentTimeMillis() - s;
              System.out.println(s + "--");//3484               
              long ss = System.currentTimeMillis();
              OutputStream out2 = new BufferedOutputStream(new FileOutputStream(new File("D:\\teach\\a2.txt")));
              for(int i = 48 ; i < 1000000; i++) {
                     out2.write(i);
              }
              ss = System.currentTimeMillis() - ss;
              System.out.println(ss + "==");//54               
              out.close();
              out2.close();
       }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章