鴻蒙OS FileInputStream

2022-10-19 16:23 更新

FileInputStream

java.lang.Object

|---java.io.InputStream

|---|---java.io.FileInputStream

public class FileInputStream
extends InputStream

FileInputStream 從文件系統(tǒng)中的文件獲取輸入字節(jié)。 可用的文件取決于主機環(huán)境。

FileInputStream 用于讀取原始字節(jié)流,例如圖像數(shù)據(jù)。 要讀取字符流,請考慮使用 FileReader。

Since:

JDK1.0

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
FileInputStream(File file) 通過打開與實際文件的連接來創(chuàng)建 FileInputStream,該文件由文件系統(tǒng)中的 File 對象文件命名。
FileInputStream(FileDescriptor fdObj) 使用文件描述符 fdObj 創(chuàng)建一個 FileInputStream,它表示與文件系統(tǒng)中實際文件的現(xiàn)有連接。
FileInputStream(String name) 通過打開與實際文件的連接來創(chuàng)建 FileInputStream,該文件由文件系統(tǒng)中的路徑名 name 命名。

方法總結(jié)

修飾符和類型 方法 描述
int available() 返回可以從此輸入流中讀取(或跳過)的剩余字節(jié)數(shù)的估計值,而不會被下一次調(diào)用此輸入流的方法阻塞。
void close() 關(guān)閉此文件輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。
protected void finalize() 確保在不再引用此文件輸入流時調(diào)用該文件輸入流的 close 方法。
FileChannel getChannel() 返回與此文件輸入流關(guān)聯(lián)的唯一 FileChannel 對象。
FileDescriptor getFD() 返回 FileDescriptor 對象,該對象表示與此 FileInputStream 正在使用的文件系統(tǒng)中的實際文件的連接。
int read() 從此輸入流中讀取一個字節(jié)的數(shù)據(jù)。
int read(byte[] b) 從此輸入流中讀取最多 b.length 個字節(jié)的數(shù)據(jù)到字節(jié)數(shù)組中。
int read(byte[] b, int off, int len) 從此輸入流中讀取最多 len 個字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組中。
long skip(long n) 跳過并丟棄輸入流中的 n 字節(jié)數(shù)據(jù)。
從類 java.io.InputStream 繼承的方法
mark, markSupported, reset
從類 java.lang.Object 繼承的方法
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細信息

FileInputStream

public FileInputStream(String name) throws FileNotFoundException

通過打開與實際文件的連接來創(chuàng)建 FileInputStream,該文件由文件系統(tǒng)中的路徑名 name 命名。 創(chuàng)建一個新的 FileDescriptor 對象來表示此文件連接。

首先,如果有一個安全管理器,它的 checkRead 方法會以 name 參數(shù)作為它的參數(shù)來調(diào)用。

如果命名文件不存在,是目錄而不是常規(guī)文件,或者由于某些其他原因無法打開讀取,則拋出 FileNotFoundException。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 系統(tǒng)相關(guān)的文件名。

Throws:

Throw名稱 Throw描述
FileNotFoundException 如果文件不存在,是目錄而不是常規(guī)文件,或者由于某些其他原因無法打開讀取。
SecurityException 如果存在安全管理器并且其 checkRead 方法拒絕對文件的讀取訪問。

FileInputStream

public FileInputStream(File file) throws FileNotFoundException

通過打開與實際文件的連接來創(chuàng)建 FileInputStream,該文件由文件系統(tǒng)中的 File 對象文件命名。 創(chuàng)建一個新的 FileDescriptor 對象來表示此文件連接。

首先,如果存在安全管理器,則調(diào)用其 checkRead 方法,并將文件參數(shù)表示的路徑作為其參數(shù)。

如果命名文件不存在,是目錄而不是常規(guī)文件,或者由于某些其他原因無法打開讀取,則拋出 FileNotFoundException。

參數(shù):

參數(shù)名稱 參數(shù)描述
file 要打開以供閱讀的文件。

Throws:

Throw名稱 Throw描述
FileNotFoundException 如果文件不存在,是目錄而不是常規(guī)文件,或者由于某些其他原因無法打開讀取。
SecurityException 如果存在安全管理器并且其 checkRead 方法拒絕對文件的讀取訪問。

FileInputStream

public FileInputStream(FileDescriptor fdObj)

使用文件描述符 fdObj 創(chuàng)建一個 FileInputStream,它表示與文件系統(tǒng)中實際文件的現(xiàn)有連接。

如果有安全管理器,則調(diào)用它的 checkRead 方法,并以文件描述符 fdObj 作為其參數(shù),以查看是否可以讀取文件描述符。 如果拒絕對文件描述符的讀取訪問,則會引發(fā) SecurityException。

如果 fdObj 為 null,則拋出 NullPointerException。

如果 fdObj 無效,此構(gòu)造函數(shù)不會引發(fā)異常。 但是,如果在結(jié)果流上調(diào)用方法以嘗試對流進行 I/O,則會引發(fā) IOException。

參數(shù):

參數(shù)名稱 參數(shù)描述
fdObj 要打開以供讀取的文件描述符。

Throws:

Throw名稱 Throw描述
SecurityException 如果安全管理器存在并且其 checkRead 方法拒絕對文件描述符的讀取訪問。

方法詳情

read

public int read() throws IOException

從此輸入流中讀取一個字節(jié)的數(shù)據(jù)。 如果還沒有輸入可用,則此方法會阻塞。

指定者:

讀入類 InputStream

返回:

數(shù)據(jù)的下一個字節(jié),如果到達文件末尾,則為 -1。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

read

public int read(byte[] b) throws IOException

從此輸入流中讀取最多 b.length 個字節(jié)的數(shù)據(jù)到字節(jié)數(shù)組中。 此方法會阻塞,直到某些輸入可用。

覆蓋:

讀入類 InputStream

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。

返回:

讀入緩沖區(qū)的總字節(jié)數(shù),如果由于已到達文件末尾而沒有更多數(shù)據(jù),則為 -1。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤。

read

public int read(byte[] b, int off, int len) throws IOException

從此輸入流中讀取最多 len 個字節(jié)的數(shù)據(jù)到一個字節(jié)數(shù)組中。 如果 len 不為零,則該方法會阻塞,直到某些輸入可用; 否則,不讀取任何字節(jié)并返回 0。

覆蓋:

讀入類 InputStream

參數(shù):

參數(shù)名稱 參數(shù)描述
b 讀取數(shù)據(jù)的緩沖區(qū)。
off 目標數(shù)組 b 中的起始偏移量
len 讀取的最大字節(jié)數(shù)。

返回:

讀入緩沖區(qū)的總字節(jié)數(shù),如果由于已到達文件末尾而沒有更多數(shù)據(jù),則為 -1。

Throws:

Throw名稱 Throw描述
NullPointerException 如果 b 為空。
IndexOutOfBoundsException 如果 off 為負數(shù),len 為負數(shù),或者 len 大于 b.length - off
IOException 如果發(fā)生 I/O 錯誤。

skip

public long skip(long n) throws IOException

跳過并丟棄輸入流中的 n 字節(jié)數(shù)據(jù)。

由于各種原因,skip 方法最終可能會跳過一些較小的字節(jié)數(shù),可能為 0。如果 n 為負數(shù),該方法將嘗試向后跳過。 如果支持文件在其當前位置不支持向后跳過,則會引發(fā) IOException。 返回實際跳過的字節(jié)數(shù)。 如果它向前跳過,它會返回一個正值。 如果向后跳過,則返回負值。

此方法可能會跳過比后備文件中剩余的字節(jié)更多的字節(jié)。 這不會產(chǎn)生異常,并且跳過的字節(jié)數(shù)可能包括超出后備文件 EOF 的一些字節(jié)數(shù)。 在跳過結(jié)尾后嘗試從流中讀取將導致 -1 指示文件的結(jié)尾。

覆蓋:

在 InputStream 類中跳過

參數(shù):

參數(shù)名稱 參數(shù)描述
n 要跳過的字節(jié)數(shù)。

返回:

跳過的實際字節(jié)數(shù)。

Throws:

Throw名稱 Throw模式
IOException 如果 n 為負數(shù),如果流不支持查找,或者發(fā)生 I/O 錯誤。

available

public int available() throws IOException

返回可以從此輸入流中讀?。ɑ蛱^)的剩余字節(jié)數(shù)的估計值,而不會被下一次調(diào)用此輸入流的方法阻塞。 當文件位置超出 EOF 時返回 0。 下一次調(diào)用可能是同一個線程或另一個線程。 單次讀取或跳過這么多字節(jié)不會阻塞,但可能會讀取或跳過更少的字節(jié)。

在某些情況下,非阻塞讀?。ɑ蛱^)可能會在其速度較慢時被阻止,例如通過慢速網(wǎng)絡(luò)讀取大文件時。

覆蓋:

在類 InputStream 中可用

返回:

估計可以從該輸入流中讀?。ɑ蛱^)而不會阻塞的剩余字節(jié)數(shù)。

Throws:

Throw名稱 Throw模式
IOException 如果此文件輸入流已通過調(diào)用 close 關(guān)閉或發(fā)生 I/O 錯誤。

close

public void close() throws IOException

關(guān)閉此文件輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。

如果此流具有關(guān)聯(lián)的通道,則該通道也將關(guān)閉。

指定者:

在接口 AutoCloseable 中關(guān)閉

指定者:

在接口Closeable中關(guān)閉

覆蓋:

在類 InputStream 中關(guān)閉

Throws:

Throw名稱 Throw模式
IOException 如果發(fā)生 I/O 錯誤。

getFD

public final FileDescriptor getFD() throws IOException

返回 FileDescriptor 對象,該對象表示與此 FileInputStream 正在使用的文件系統(tǒng)中的實際文件的連接。

返回:

與此流關(guān)聯(lián)的文件描述符對象。

Throws:

Throw名稱 Throw模式
IOException 如果發(fā)生 I/O 錯誤。

getChannel

public FileChannel getChannel()

返回與此文件輸入流關(guān)聯(lián)的唯一 FileChannel 對象。

返回通道的初始位置將等于到目前為止從文件中讀取的字節(jié)數(shù)。 從此流中讀取字節(jié)將增加通道的位置。 顯式或通過讀取更改通道的位置將更改此流的文件位置。

返回:

與此文件輸入流關(guān)聯(lián)的文件通道

Since:

1.4

finalize

protected void finalize() throws IOException

確保在不再引用此文件輸入流時調(diào)用該文件輸入流的 close 方法。

覆蓋:

在類 Object 中完成

Throws:

Throw名稱 Throw模式
IOException 如果發(fā)生 I/O 錯誤。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號