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

Java 为什么在读取文件时我们总是检查-1?,java,file,unicode,filereader,Java,File,Unicode,Filereader,我试图从“read.txt”读取文件,在读取文件时,我们总是检查-1(第行:while(readfile!=-1) 为什么我们总是通过与“-1”比较来检查结束文件。有什么具体原因吗 (int readfile=filereader.read();)总是通过此参数返回unicode值,-1表示文件结尾的unicode值,如果是这样,那么我们就知道文件结尾的unicode值是“-1” 这些内容可以在方法的文档中找到。例如,您试图查找的方法是read,来自FileReader 以下是read方法的文档

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

为什么我们总是通过与“-1”比较来检查结束文件。有什么具体原因吗

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


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

以下是
read
方法的文档:

在页面的“返回”部分下

已读取字符,如果已到达流的结尾,则为-1

看,这就是你了解这些事情的方式

为什么我们总是通过与“-1”比较来检查结束文件。有什么具体原因吗

因为若你们不这样做,你们将永远不会检测到流的尽头,你们将无休止地循环

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

不,它不会。它返回-1或Unicode值。请参阅Javadoc

根据这个论点

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

是否-1表示文件结尾的unicode值

不存在(a)Unicode值为-1或(b)Unicode值为文件结尾的情况

如果是

事实并非如此

然后我们如何知道文件末尾的unicode值是“-1”


它不是-1或
“-1”
。它是API返回的一个sentinel值,而不是Unicode值。

,是否有证据表明文件末尾有Unicode值-1@sainathpawar我不认为unicode中有负值。文本的unicode字符结尾是U+0003。是的,你说得对@sweeper,unicode中没有负值。但是当我尝试打印“System.out.println((char)readfile);”,没有对char(System.out.println(readfile);)进行类型转换,我得到的输出是:104 13 10那么你的呢?@sainatpawards这个“13”在这里代表文件的结尾(U+0003)只是一个说明,你是如何知道104 103 10的:ASCII字母h(U+0068),后跟Windows样式的换行符(U+000D U+000A).因为13是CR,10是LF,在任何ASCII表格中都可以找到。我没有说关于104的任何内容。
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();
    }



}

}