国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java IO框架總攬--FileOutputStream源碼解讀

warmcheng / 3074人閱讀

摘要:是繼承與的子類常用屬性文件描述符是否在文件尾部開始追加寫入用于讀寫映射操作文件的通道文件的路徑一個關閉鎖,只在方法中使用,確保多線程同步調用構造函數創建一個向指定對應的文件中寫入數據的文件輸出流創建一個向指定對應的文件中寫入數據的文件輸出流

FileOutputStream 是繼承與OutputStream的子類

1 常用屬性

private final FileDescriptor fd;// 文件描述符

private final boolean append; // 是否在文件尾部開始追加寫入

private FileChannel channel; // 用于讀、寫、映射、操作文件的通道

private final String path;// 文件的路徑

private final Object closeLock = new Object();// 一個關閉鎖,只在close()方法中使用,確保多線程同步調用

2 構造函數

public FileOutputStream(String name);// 創建一個向指定File對應的文件中寫入數據的文件輸出流

public FileOutputStream(String name, boolean append);// 創建一個向指定File對應的文件中寫入數據的文件輸出流,第二個參數append是否在文件末尾開始寫入

public FileOutputStream(File file);// 創建一個向指定File對應的文件中寫入數據的文件輸出流

public FileOutputStream(File file, boolean append);// 創建一個向指定File對應的文件中寫入數據的文件輸出流

public FileOutputStream(FileDescriptor fdObj); // 根據文件描述符構造輸出流

3 常用方法

// 寫入一個字節到該文件輸出流中,調用下邊的本地方法

public void write(int b) throws IOException {

   write(b, append);// 調用的是一個native方法

}

// 本地方法,寫入一個字節到該文件輸出流中

private native void write(int b, boolean append) throws IOException;

// 將給定的字節數組b中的所有字節寫入文件輸出流,調用本地方法

public void write(byte b[]) throws IOException {

  writeBytes(b, 0, b.length, append);

}

// 將給定的字節數組b中從off開始的len個字節字節寫入文件輸出流,調用下邊的本地方法

public void write(byte b[], int off, int len) throws IOException {

  writeBytes(b, off, len, append);

}

// 本地方法,將給定的字節數組b中從off開始的len個字節寫入文件輸出流

private native void writeBytes(byte b[], int off, int len, boolean append) throws IOException;

// 關閉流,調用本地的方法

public void close() throws IOException {

  synchronized (closeLock) {
     
      if (closed) {
          return;
      }
      
      closed = true;
  }
  
  if (channel != null) {
      channel.close();
  }
  
  fd.closeAll(new Closeable() {
      public void close() throws IOException {
         close0();
     }
  });

}

// 本地方法,關閉流

private native void close0() throws IOException;

// 清理到文件的連接,并確保不再引用此文件輸入流時調用此close的方法

protected void finalize() throws IOException {

 if (fd != null) {
     if (fd == FileDescriptor.out || fd == FileDescriptor.err) {
         flush();
     } else {
         close();
     }
 }

}

// 獲取流對象對應的通道,如果為空就創建一個新的通道

public FileChannel getChannel() {

synchronized (this) {
    if (channel == null) {
        channel = FileChannelImpl.open(fd, path, false, true, append, this);
    }
    return channel;
}

}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72008.html

相關文章

  • Java IO框架總攬--FileInputStream源碼解讀

    摘要:是從文件系統中的文件中獲取字節,至于什么文件,取決于主機環境,用于讀取原始字節流,如圖像數據,假如想要讀取字符類型流,請使用。跳過個字節本地方法關閉文件輸入流 FileInputStream是從文件系統中的文件中獲取字節,至于什么文件,取決于主機環境,FileInputStream用于讀取原始字節流,如圖像數據,假如想要讀取字符類型流,請使用FileReader。 ...

    894974231 評論0 收藏0
  • Java IO框架總攬--File源碼解讀

    摘要:直接繼承與,實現了接口和接口,實現接口,意味著對象支持序列化操作,而實現接口,意味著之間可以比較大小。刪除此抽象路徑名表示的文件或目錄。標記此抽象路徑名指定的文件或目錄,從而只能對其進行讀操作。 showImg(https://segmentfault.com/img/bVbi3ls?w=2048&h=164);1 File直接繼承與Object,實現了Serializable接口和C...

    rubyshen 評論0 收藏0
  • Java IO框架總攬--ObjectInputStream& ObjectOutputSt

    摘要:與的作用是對基本數據和對象進行序列化操作進行支持。如果檢測到反序列化的類的和對象二進制流的不同,則會拋出異常。 ObjectInputStream與ObjectOutputStream的作用是:對基本數據和對象進行序列化操作進行支持。其中ObjectInputStream對象提供對基本數據和對象對持久存儲,當我們需要讀取這些存儲這些基本數據或對象時,可以創建文件輸入流對應的Object...

    philadelphia 評論0 收藏0
  • Java IO框架總攬--序列化

    摘要:序列化提供的一種對象序列化的機制,在該機制中,一個對象可以被表示為一個字節序列,該字節序列包括對象的數據有關對象的類型的信息和存儲在對象中的數據類型。類和是高程次的數據流,他們包含序列化和反序列化對象的方法。 序列化:Java提供的一種對象序列化的機制,在該機制中,一個對象可以被表示為一個字節序列,該字節序列包括對象的數據、有關對象的類型的信息、和存儲在對象中的數據類型。 反序列化:將...

    codercao 評論0 收藏0
  • 從設計者的角度理解Java IO

    摘要:通過多個裝飾類實現責任鏈模式,它將對一個輸入流的不同處理分散到不同的中去。 1、基本概念 1.1、InputStream 最基本的字節輸入流,抽象類,定義了讀取原始字節的所有基本方法1.1.1、public abstract int read() throws IOException 讀取一個字節的方法,最基礎的方法1.1.2、public int read(byte b[], in...

    Flink_China 評論0 收藏0

發表評論

0條評論

warmcheng

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<