天天看点

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对象执行某些检查(比如检查文件是否存在)。