JavaTM 2 Platform
Standard Ed. 6

java.io
類別 FileInputStream

java.lang.Object
  繼承者 java.io.InputStream
      繼承者 java.io.FileInputStream
所有已實作的介面:
Closeable

public class FileInputStream
extends InputStream

FileInputStream 從檔案系統中的某個檔案中獲得輸入位元組。哪些檔案可用取決於主機環境。

FileInputStream 用於讀取諸如圖像資料之類別的原始位元組串流。要讀取字元串流,請考慮使用 FileReader

從以下版本開始:
JDK1.0
另請參見:
File, FileDescriptor, FileOutputStream

建構子摘要
FileInputStream(File file)
          通過打開一個到實際檔案的連接來創建一個 FileInputStream,該檔案通過檔案系統中的 File 物件 file 指定。
FileInputStream(FileDescriptor fdObj)
          通過使用檔案描述符 fdObj 創建一個 FileInputStream,該檔案描述符表示到檔案系統中某個實際檔案的現有連接。
FileInputStream(String name)
          通過打開一個到實際檔案的連接來創建一個 FileInputStream,該檔案通過檔案系統中的路徑名 name 指定。
 
方法摘要
 int available()
          返回下一次對此輸入串流調用的方法可以不受阻塞地從此輸入串流讀取(或跳過)的估計剩餘位元組數。
 void close()
          關閉此檔案輸入串流並釋放與此串流有關的所有系統資源。
protected  void finalize()
          確保在不再參考檔案輸入串流時調用其 close 方法。
 FileChannel getChannel()
          返回與此檔案輸入串流有關的唯一 FileChannel 物件。
 FileDescriptor getFD()
          返回表示到檔案系統中實際檔案的連接的 FileDescriptor 物件,該檔案系統正被此 FileInputStream 使用。
 int read()
          從此輸入串流中讀取一個資料位元組。
 int read(byte[] b)
          從此輸入串流中將最多 b.length 個位元組的資料讀入一個 byte 陣列中。
 int read(byte[] b, int off, int len)
          從此輸入串流中將最多 len 個位元組的資料讀入一個 byte 陣列中。
 long skip(long n)
          從輸入串流中跳過並丟棄 n 個位元組的資料。
 
從類別 java.io.InputStream 繼承的方法
mark, markSupported, reset
 
從類別 java.lang.Object 繼承的方法
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

FileInputStream

public FileInputStream(String name)
                throws FileNotFoundException
通過打開一個到實際檔案的連接來創建一個 FileInputStream,該檔案通過檔案系統中的路徑名 name 指定。創建一個新 FileDescriptor 物件來表示此檔案連接。

首先,如果有安全管理器,則用 name 作為參數調用其 checkRead 方法。

如果指定檔案不存在,或者它是一個目錄,而不是一個常規檔案,抑或因為其他某些原因而無法打開進行讀取,則拋出 FileNotFoundException

參數:
name - 與系統有關的檔案名。
拋出:
FileNotFoundException - 如果該檔案不存在,或者它是一個目錄,而不是一個常規檔案,抑或因為其他某些原因而無法打開進行讀取。
SecurityException - 如果存在安全管理器,且其 checkRead 方法拒絕對檔案進行讀取存取。
另請參見:
SecurityManager.checkRead(java.lang.String)

FileInputStream

public FileInputStream(File file)
                throws FileNotFoundException
通過打開一個到實際檔案的連接來創建一個 FileInputStream,該檔案通過檔案系統中的 File 物件 file 指定。創建一個新 FileDescriptor 物件來表示此檔案連接。

首先,如果有安全管理器,則用 file 參數表示的路徑作為參數調用其 checkRead 方法。

如果指定檔案不存在,或者它是一個目錄,而不是一個常規檔案,抑或因為其他某些原因而無法打開進行讀取,則拋出 FileNotFoundException

參數:
file - 為了進行讀取而打開的檔案。
拋出:
FileNotFoundException - 如果該檔案不存在,或者它是一個目錄,而不是一個常規檔案,抑或因為其他某些原因而無法打開進行讀取。
SecurityException - 如果存在安全管理器,且其 checkRead 方法拒絕對檔案進行讀取存取。
另請參見:
File.getPath(), SecurityManager.checkRead(java.lang.String)

FileInputStream

public FileInputStream(FileDescriptor fdObj)
通過使用檔案描述符 fdObj 創建一個 FileInputStream,該檔案描述符表示到檔案系統中某個實際檔案的現有連接。

首先,如果有安全管理器,則用檔案描述符 fdObj 作為參數調用其 checkRead 方法,以查看它是否可以讀取該檔案描述符。如果拒絕對該檔案描述符進行讀取存取,則拋出 SecurityException

如果 fdObj 為 null,則拋出 NullPointerException

參數:
fdObj - 為了進行讀取而打開的檔案描述符。
拋出:
SecurityException - 如果存在安全管理器,且其 checkRead 方法拒絕對檔案描述符進行讀取存取
另請參見:
SecurityManager.checkRead(java.io.FileDescriptor)
方法詳細資訊

read

public int read()
         throws IOException
從此輸入串流中讀取一個資料位元組。如果沒有輸入可用,則此方法將阻塞。

指定者:
類別 InputStream 中的 read
返回:
下一個資料位元組;如果已到達檔案末尾,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤。

read

public int read(byte[] b)
         throws IOException
從此輸入串流中將最多 b.length 個位元組的資料讀入一個 byte 陣列中。在某些輸入可用之前,此方法將阻塞。

覆寫:
類別 InputStream 中的 read
參數:
b - 存儲讀取資料的緩衝區。
返回:
讀入緩衝區的位元組總數,如果因為已經到達檔案末尾而沒有更多的資料,則返回 -1
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
InputStream.read(byte[], int, int)

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
從此輸入串流中將最多 len 個位元組的資料讀入一個 byte 陣列中。如果 len 不為 0,則在輸入可用之前,該方法將阻塞;否則,不讀取任何位元組並返回 0

覆寫:
類別 InputStream 中的 read
參數:
b - 存儲讀取資料的緩衝區。
off - 目標陣列 b 中的起始偏移量。
len - 讀取的最大位元組數。
返回:
讀入緩衝區的位元組總數,如果因為已經到達檔案末尾而沒有更多的資料,則返回 -1
拋出:
NullPointerException - 如果 bnull
IndexOutOfBoundsException - 如果 off 為負、len 為負,或者 len 大於 b.length - off
IOException - 如果發生 I/O 錯誤。
另請參見:
InputStream.read()

skip

public long skip(long n)
          throws IOException
從輸入串流中跳過並丟棄 n 個位元組的資料。

出於各種原因,skip 方法最終跳過的位元組數可能更少一些,甚至可能為 0。如果 n 為負,則拋出 IOException,即使 InputStream 父級類別的 skip 方法在這種情況下沒有執行任何操作。返回實際跳過的位元組數。

此方法跳過的位元組可能多於底層實作檔案中剩餘的位元組。這不會產生異常,並且跳過的位元組數可能包括底層實作檔案的 EOF(檔案結束符)之後的一些位元組數。如果試圖在跳過末尾之後讀取串流,那麼會返回 -1(指示檔案結束)。

覆寫:
類別 InputStream 中的 skip
參數:
n - 要跳過的位元組數。
返回:
實際跳過的位元組數。
拋出:
IOException - 如果 n 為負,如果該串流不支持尋找操作,或者發生 I/O 錯誤。

available

public int available()
              throws IOException
返回下一次對此輸入串流調用的方法可以不受阻塞地從此輸入串流讀取(或跳過)的估計剩餘位元組數。下一次調用可能是同一個執行緒,也可能是另一個執行緒。一次讀取或跳過此數量個位元組不會發生阻塞,但讀取或跳過的位元組可能小於該數。

在某些情況下,非阻塞的讀取(或跳過)操作在執行很慢時看起來受阻塞,例如,在網速緩慢的網路上讀取大檔案時。

覆寫:
類別 InputStream 中的 available
返回:
可以不受阻塞地從此輸入串流中讀取(或跳過)的估計剩餘位元組數。
拋出:
IOException - 如果此檔案輸入串流已通過調用 close 關閉,或者發生 I/O 錯誤。

close

public void close()
           throws IOException
關閉此檔案輸入串流並釋放與此串流有關的所有系統資源。

如果此串流有一個與之關聯的通道,則關閉該通道。

指定者:
介面 Closeable 中的 close
覆寫:
類別 InputStream 中的 close
拋出:
IOException - 如果發生 I/O 錯誤。

getFD

public final FileDescriptor getFD()
                           throws IOException
返回表示到檔案系統中實際檔案的連接的 FileDescriptor 物件,該檔案系統正被此 FileInputStream 使用。

返回:
與此串流有關的檔案描述符物件。
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
FileDescriptor

getChannel

public FileChannel getChannel()
返回與此檔案輸入串流有關的唯一 FileChannel 物件。

所返回通道的初始 position 將等於到目前為止從檔案中讀取的位元組數。從此串流中讀取的位元組會使通道的位置遞增。顯式地或通過讀取來更改通道的位置會更改此串流的檔案位置。

返回:
與此檔案輸入串流有關的檔案通道
從以下版本開始:
1.4

finalize

protected void finalize()
                 throws IOException
確保在不再參考檔案輸入串流時調用其 close 方法。

覆寫:
類別 Object 中的 finalize
拋出:
IOException - 如果發生 I/O 錯誤。
另請參見:
close()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only