天天看點

Java IO: FileInputStream

fileinputstream可以以位元組流的形式讀取檔案内容。fileinputstream是inputstream的子類,這意味着你可以把fileinputstream當做inputstream使用(fileinputstream與inputstream的行為類似)。

這是一個fileinputstream的例子:

<code>01</code>

<code>inputstream input = </code><code>new</code> <code>fileinputstream(</code><code>"c:\\data\\input-text.txt"</code><code>);</code>

<code>02</code>

<code>03</code>

<code>int</code> <code>data = input.read();</code><code>while</code><code>(data != -</code><code>1</code><code>) {</code>

<code>04</code>

<code>05</code>

<code>    </code><code>//do something with data...</code>

<code>06</code>

<code>07</code>

<code>    </code><code>dosomethingwithdata(data);</code>

<code>08</code>

<code>09</code>

<code>    </code><code>data = input.read();</code>

<code>10</code>

<code>11</code>

<code>}</code>

<code>12</code>

<code>13</code>

<code>input.close();</code>

fileinputstream的read()方法傳回讀取到的包含一個位元組内容的int變量(譯者注:0~255)。如果read()方法傳回-1,意味着程式已經讀到了流的末尾,此時流内已經沒有多餘的資料可供讀取了,你可以關閉流。-1是一個int類型,不是byte類型,這是不一樣的。

其中一個fileinputstream構造函數取一個file對象替代string對象作為參數。這裡是一個使用該構造函數的例子:

<code>1</code>

<code>file file = </code><code>new</code> <code>file(</code><code>"c:\\data\\input-text.txt"</code><code>);</code>

<code>2</code>

<code>3</code>

<code>inputstream input = </code><code>new</code> <code>fileinputstream(file);</code>

至于你該采用參數是string對象還是file對象的構造函數,取決于你目前是否已經擁有一個file對象,也取決于你是否要在打開fileoutputstream之前通過file對象執行某些檢查(比如檢查檔案是否存在)。