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