Java 为什么在读取文件时我们总是检查-1?
我试图从“read.txt”读取文件,在读取文件时,我们总是检查-1(第行:while(readfile!=-1) 为什么我们总是通过与“-1”比较来检查结束文件。有什么具体原因吗 (int readfile=filereader.read();)总是通过此参数返回unicode值,-1表示文件结尾的unicode值,如果是这样,那么我们就知道文件结尾的unicode值是“-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
,来自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();
}
}
}