天天看點

Android FileInputStream類的使用

FileInputStream類

1.FileInputStream類概述

    繼承關系:

       java.io.FileInputStream->java.io.InputStream->java.lang.Object

    實作接口:

       Closeable

    類的功能:

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

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

2.類的屬性和行為

   (1) public void close() throws IOException

    功能:  關閉此檔案輸入流并釋放與此流有關的所有系統資源。

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

    指定者:接口 Closeable 中的 close

    覆寫:  類 InputStream 中的 close

    抛出:  IOException - 如果發生 I/O 錯誤。

   (2) public int read() throws IOException

    功能:  從此輸入流中讀取一個資料位元組。如果沒有輸入可用,則此方法将阻塞。

    指定者:類 InputStream 中的 read

    傳回:  下一個資料位元組;如果已到達檔案末尾,則傳回 -1。

    抛出:  IOException - 如果發生 I/O 錯誤。

   (3) public int read(byte[] b) throws IOException

    功能:從此輸入流中将最多b.length個位元組的資料讀入一個位元組數組中。在某些輸入可用前,此方法将阻塞

    覆寫:類 InputStream 中的 read

    參數:b - 存儲讀取資料的緩沖區

    傳回:讀入緩沖區的位元組總數,如果因為已經到達檔案末尾而沒有更多的資料,則傳回 -1。

    抛出:IOException - 如果發生 I/O 錯誤。

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

    功能:從此輸入流中将最多len個位元組的資料讀入一個位元組數組中。在某些輸入可用之前,此方法将阻塞。

    覆寫:類 InputStream 中的 read

    參數:b - 存儲讀取資料的緩沖區。

          off - 資料的起始偏移量。

          len - 讀取的最大位元組數。

    傳回:讀入緩沖區的位元組總數,如果因為已經到達檔案末尾而沒有更多的資料,則傳回 -1。

    抛出:IOException - 如果發生 I/O 錯誤。

3.常見錯誤

   在eclipse下使用FileInputStream,提示找不到指定檔案

   代碼:

       filename = "abc.txt" ;

       FileInputStream fis = new FileInputStream(filename);

   錯誤顯示:

       java.io.FileNotFoundException: dbconfig.properties (系統找不到指定的檔案。)

       at java.io.FileInputStream.open(Native Method)

       at java.io.FileInputStream.<init>(FileInputStream.java:106)

       at java.io.FileInputStream.<init>(FileInputStream.java:66)

   解決方法:

       因為eclipse下運作main程式時,eclipse會自動将釋出目錄作為其根目錄,是以會提示找不到檔案,将filename改為絕對目錄即可

       filename = "\sdcard\...\abc.txt" ;