为什么在阅读文件时我们总是检查-1?

时间:2017-12-31 08:14:45

标签: java file unicode filereader

我正在尝试从“read.txt”读取文件,在读取文件时,我们总是检查-1(line:while(readfile!= - 1)。

为什么我们总是通过将结果文件与“ - 1”进行比较来检查结束文件。是否有任何具体原因?

(int readfile = filereadrer.read();)总是通过此参数返回unicode值,-1表示文件结尾的unicode值,如果是,那么我们如何知道文件结尾的unicode值是“-1”

public class FilesPractise {

   public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub

     File file = new File("read.txt");

     file.createNewFile();

     FileReader filereadrer = new FileReader(file);

     int readfile = filereadrer.read();

       while(readfile!=-1){
            System.out.println((char)readfile);

             readfile = filereadrer.read();
    }



}

}

2 个答案:

答案 0 :(得分:3)

这些东西可以在方法的文档中找到。例如,您尝试查找的方法是read,来自FileReader

以下是read方法的文档:https://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#read--

在页面中的"返回"部,

  

读取的字符,如果已到达流的末尾,则返回-1

请参阅?这就是你如何了解这些事情。

答案 1 :(得分:1)

  

为什么我们总是通过将结果文件与" -1"进行比较来检查结束文件。是否有任何具体原因?

因为如果你没有,你将永远不会检测到流的结束,你将无休止地循环。

  

(int readfile = filereadrer.read();)始终返回unicode值

不,它没有。它返回-1 一个Unicode值。见Javadoc。

  

通过这个论点

这不是一个论点。这是一个错误的假设。

  

-1表示文件结尾的unicode值

没有(a)Unicode值为-1或(b)文件结尾的Unicode值。

  

如果是

不是。

  

然后我们如何知道文件结尾的unicode值是" -1"

它不是-1或"-1"。它是由API 而不是返回的Unicode值的返回值。