1

请解释为什么我们在 while 循环中使用 -1

<%  
    File file = new File(file1);       
    int ch;       
    strContent = new StringBuffer("");       
    FileInputStream fin = null;       
    try {       
        fin = new FileInputStream(file);       
        while ((ch = fin.read()) != -1) 
            strContent.append((char) ch);
        fin.close();
    } catch (Exception e) {
        System.out.println(e);
    }   
    System.out.println(strContent.toString());

%> 

在上面的代码中解释了我们为什么使用-1,我不明白为什么我们使用-1

4

5 回答 5

2

文档read

返回:读入缓冲区的总字节数,如果由于到达文件末尾而没有更多数据,则返回 -1。

因此,当没有更多内容可阅读时,循环结束

于 2013-11-09T11:13:07.017 回答
1

您应该阅读文档:

read()如果到达文件末尾,该方法返回 -1。

因此,当您到达文件末尾时,您希望停止 while 循环。

于 2013-11-09T11:12:07.127 回答
0
public int read()
         throws IOException

从此输入流中读取一个字节的数据。如果还没有输入可用,则此方法会阻塞。

指定者:

read in class InputStream

回报:

数据的下一个字节,如果到达文件末尾,则为 -1。

抛出:

IOException - if an I/O error occurs.
于 2013-11-09T11:17:45.730 回答
0

此条件检查 EOF(文件结尾)。即停止阅读一次,到达文件结尾。

于 2013-11-09T11:12:49.827 回答
0

这在 Java 文档中有详细说明:

返回: 读入缓冲区的总字节数,如果由于到达流的末尾而没有更多数据,则返回 -1。

在这里阅读更多:

http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html
于 2013-11-09T11:13:25.173 回答