精华内容
下载资源
问答
  • 原因是在读出最后一个字符,in.eof()还是假的,只读过最后一个字符再读(读不成功)in.eof()才变为。由于最后一次没有读取成功,ch保持原值,所以最后一个字符被多算一次。
    原因是在读出最后一个字符时,in.eof()还是为假的,只当读过最后一个字符再读(读不成功)时in.eof()才变为真。由于最后一次没有读取成功,ch保持原值,所以最后一个字符被多算一次。
    展开全文
  • java eof_Java的EOF标识?

    2021-02-12 09:54:49
    直接从JDK接口文档入手,以FileInputStream例,JDK接口文档给出了明确的说明:使用FileInputStream的read方法读取文件返回-1就表明读到了文件末尾,如果期间出现IO异常,则会抛出一个IOException。而对于EOF...

    这篇是关于JAVA中EOF标识的讲解,之前在工作上碰到过一个问题,有人问过,不能通过判断EOF来知道文件有没有读取完毕吗?其实,还真不能。

    直接从JDK接口文档入手,以FileInputStream为例,JDK接口文档给出了明确的说明:

    c42b1e5a409b640430df352fdbef3a57.png

    使用FileInputStream的read方法读取文件时,当返回-1就表明读到了文件末尾,如果期间出现IO异常,则会抛出一个IOException。而对于EOF文件结束符,其实是不存在的。在Linux系统之中,EOF根本不是一个字符,而是当系统读取到文件结尾,所返回的一个信号值,例如在C语言中,EOF是一个定义在头文件stdio.h的常量,一般等于-1。对于JAVA的实现,我们可以通过查看FileInputStream的源码查看,如下:

    cf194ca7dabc98dcf2a4861580e7c4ea.png

    其中read0为native方法,需要查看jvm源码。根据JVM源码定位进去,发现read0调用readSingle方法:

    b90e49977a98f87b4ea5826bcc325a33.png

    而readSingle方法位于io_util.c中:

    4b0fcbd294fb5ff50d9635a4d733aaeb.png

    1acbf6daceec19a7f1b5bdd543937f76.png

    508e7aa561df9bcf306275ab548bf9d2.png

    所以,其实read方法最后还是调用了操作系统的read方法,该方法跟具体的操作系统相关,在linux下,有如下的说明

    0fff53e8e9aff6282a3f198af9fc839f.png

    也就是,当使用read方法去读文件时,如果读到了文件末尾,没有字符返回时,则该方法返回0,如果出现异常,则返回-1.然后,JDK在readSingle方法里进行了包装,如果返回0,则在JDK层面返回-1,如果返回-1,则抛出IOException.因而,JAVA中没有EOF这个标识符,而是使用-1来标识文件结束。

    个人公众号:啊驼

    展开全文
  • 直接从JDK接口文档入手,以FileInputStream例,JDK接口文档给出了明确的说明:使用FileInputStream的read方法读取文件返回-1就表明读到了文件末尾,如果期间出现IO异常,则会抛出一个IOException。而对于EOF...

    这篇是关于JAVA中EOF标识的讲解,之前在工作上碰到过一个问题,有人问过,不能通过判断EOF来知道文件有没有读取完毕吗?其实,还真不能。

    直接从JDK接口文档入手,以FileInputStream为例,JDK接口文档给出了明确的说明:

    c42b1e5a409b640430df352fdbef3a57.png

    使用FileInputStream的read方法读取文件时,当返回-1就表明读到了文件末尾,如果期间出现IO异常,则会抛出一个IOException。而对于EOF文件结束符,其实是不存在的。在Linux系统之中,EOF根本不是一个字符,而是当系统读取到文件结尾,所返回的一个信号值,例如在C语言中,EOF是一个定义在头文件stdio.h的常量,一般等于-1。对于JAVA的实现,我们可以通过查看FileInputStream的源码查看,如下:

    cf194ca7dabc98dcf2a4861580e7c4ea.png

    其中read0为native方法,需要查看jvm源码。根据JVM源码定位进去,发现read0调用readSingle方法:

    b90e49977a98f87b4ea5826bcc325a33.png

    而readSingle方法位于io_util.c中:

    4b0fcbd294fb5ff50d9635a4d733aaeb.png

    1acbf6daceec19a7f1b5bdd543937f76.png

    508e7aa561df9bcf306275ab548bf9d2.png

    所以,其实read方法最后还是调用了操作系统的read方法,该方法跟具体的操作系统相关,在linux下,有如下的说明

    0fff53e8e9aff6282a3f198af9fc839f.png

    也就是,当使用read方法去读文件时,如果读到了文件末尾,没有字符返回时,则该方法返回0,如果出现异常,则返回-1.然后,JDK在readSingle方法里进行了包装,如果返回0,则在JDK层面返回-1,如果返回-1,则抛出IOException.因而,JAVA中没有EOF这个标识符,而是使用-1来标识文件结束。

    个人公众号:啊驼

    展开全文
  • Java的EOF标识?

    2019-10-08 11:26:31
    这篇是关于JAVA中EOF标识的讲解,之前在工作上碰到过一个问题,有人问过,不能通过判断EOF... 使用FileInputStream的read方法读取文件返回-1就表明读到了文件末尾,如果期间出现IO异常,则会抛出一个IOExcep...

    这篇是关于JAVA中EOF标识的讲解,之前在工作上碰到过一个问题,有人问过,不能通过判断EOF来知道文件有没有读取完毕吗?其实,还真不能。

     直接从JDK接口文档入手,以FileInputStream为例,JDK接口文档给出了明确的说明:

    file

     使用FileInputStream的read方法读取文件时,当返回-1就表明读到了文件末尾,如果期间出现IO异常,则会抛出一个IOException。而对于EOF文件结束符,其实是不存在的。在Linux系统之中,EOF根本不是一个字符,而是当系统读取到文件结尾,所返回的一个信号值,例如在C语言中,EOF是一个定义在头文件stdio.h的常量,一般等于-1。对于JAVA的实现,我们可以通过查看FileInputStream的源码查看,如下:

    file

     其中read0为native方法,需要查看jvm源码。根据JVM源码定位进去,发现read0调用readSingle方法:

    file

     源码看这FileInputStream.c(http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/5b86f66575b7/src/share/native/java/io/FileInputStream.c

     而readSingle方法位于io_util.c中:

    file

     搓这里io_util.c(http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/5b86f66575b7/src/share/native/java/io/io_util.c
    跟踪IO_Read方法,可以得到如下源码实现:

    file

    file

     源文件分别位于io_util_md.h(http://hg.openjdk.java.net/jdk/jdk/file/bd45ce23b1ac/src/java.base/unix/native/libjava/io_util_md.h)和io_util_md.c(http://hg.openjdk.java.net/jdk/jdk/file/bd45ce23b1ac/src/java.base/unix/native/libjava/io_util_md.c)

     所以,其实read方法最后还是调用了操作系统的read方法,该方法跟具体的操作系统相关,在linux下,有如下的说明

    file

     也就是,当使用read方法去读文件时,如果读到了文件末尾,没有字符返回时,则该方法返回0,如果出现异常,则返回-1.然后,JDK在readSingle方法里进行了包装,如果返回0,则在JDK层面返回-1,如果返回-1,则抛出IOException.因而,JAVA中没有EOF这个标识符,而是使用-1来标识文件结束。

    file

    个人公众号:啊驼

    转载于:https://www.cnblogs.com/xichji/p/11627082.html

    展开全文
  • c++中 cin对 EOF 的判断

    万次阅读 2010-12-12 22:53:00
    输入流中用成员 eofbit 来记录是否遇到 EOF ,再遇到EOF后 eofbit将被设置1, 可以用成员函数 ::eof()来测试。   输入流是以行为缓冲的 意思是...输入流才会正确的设置 eofbit   当EOF
  • 古老的VB6已经有很多年了,...出现这个问题其实很常见, ADODB.Recordset的RecordCount0,如果进行MoveFirst或取值操作,都会出现该错误 解决办法:MoveFirst使用之前,判断 RecordCount是否零即可 ...
  • 作者:猿人曰在上一篇中我们学到了 if 语句的使用,条件为真时则会执行相应的代码块,这一节我们讲 while 循环,其实 while 循环与 if 相似,条件为真时,则执行相应的代码块,不同的是 while 会一直循环相应...
  • 1.if qrytem.isempty=true then qrytem.recno:=-1; //最小值 此情况为 数据源刚打开的时候且数据记录集为空值,不为空则recno:=1;2.if qrytem.eof=true then qrytem.recno:=...而后qrytem.eof为真,recno值不变3. /
  • 背景 我让师傅给我初次验项目,...出现实时错误3021,后面都会有提示——BOF或EOF中有一个是““,或者当前的记录已被删除,所需的操作要求一个当前的记录。出现的原因是因为数据库中数据空。 BOF 是...
  • 学生修改信息之‘3021’问题

    热门讨论 2019-07-28 16:28:00
    在敲学生的时候,经常出现‘3021’问题,BOF或EOF中有一个为真时,就会出现’3021‘的错误,出现这个问题的原因主要是查找的数据库当中没有数据,在修改学籍信息的时候,将所有的数据删除就报错,可以添加一个on ...
  • 在第五版的1.4.3节中,为了读入不知道具体个数的数字,用了`while(std::cin>>i)` 这里i被定义一个整形数。...是不是说读到EOF或不是int型的输入条件判断就假?但实际上我们读入一个浮点数条件还是的。
  • 本书以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存... 5.18 运行的整数值0转换指针以后一定是空指针...
  • 6.21 数组是函数的参数什么sizeof不能正确报告数组的大小?  6.22 如何在一个文件中判断声明extern的数组的大小(例如,数组定义和大小在另一个文件中)?sizeof操作符似乎不行。  6.23 sizeof返回的...
  •  5.18 运行的整数值0转换指针以后一定是空指针吗? 5.19 如何访问位于机器地址0处的中断向量?如果我将指针值设0,编译器可能会自动将它转换非零的空指针内部表示。 5.20运行的...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    内容简介 《你必须知道的495个C语言问题》以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个...5.18 运行的整数值0转换指针以后一定是空指针吗? 61 5.19...
  • 6.21 数组是函数的参数什么sizeof不能正确报告数组的大小? 6.22 如何在一个文件中判断声明extern的数组的大小(例如,数组定义和大小在另一个文件中)?sizeof操作符似乎不行。 6.23 sizeof返回的大小是...
  • o 7.18 数组是函数的参数, 什么 sizeof 不能正确报告数组的大小 ? * 8. 内存分配 o 8.1 什么这段代码不行?char *answer; printf("Type something:\n"); gets(answer); printf("You typed \"%s\"\n", ...
  • 5.18 运行的整数值0转换指针以后一定是空指针吗? 61 5.19 如何访问位于机器地址0处的中断向量?如果我将指针值设0,编译器可能会自动将它转换非零的空指针内部表示。 62  5.20 运行的“null pointer...
  • 中文名: 你必须知道的495个C语言问题 高清PDF中文版 原名: C Programming ...5.18 运行的整数值0转换指针以后一定是空指针吗? 5.19 如何访问位于机器地址0处的中断向量?如果我将指针值设0,编译器可能会自动将...
  • 你必须知道的495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    g 但是我如下调用: int *ip; f(ip); 调用者的指针却没有任何变化。. . . . . . . . . . . . . . . 18 4.5 我能否用void** 指针作为参数, 使函数按引用接受一般指针? . . 18 4.6 我有一个函数extern int f(int *...
  • }但是我如下调用:int *ip; f(ip); 调用者的指针没有任何变化。 4.9 能否用void ** 通用指针作为参数,使函数模拟按引用传递参数? 48 4.10 我有一个函数extern intf(int *); ,它接受指向int型的指针。我怎样用...
  • java基础入门教程

    热门讨论 2009-04-29 21:36:10
    4 软 件 最 终 产 品 :用 Java 语 言 开 发 的 软 件 可 以 具 有 可视化 、 可 听 化 、 可 操作 化 的 效 果 ,这 要 比 电 视 、 电 影 的 效果 更 理 想 ,因 它 可 以做 到 "即 、 交 互、 动 画 与 ...
  • 网上日记本

    2013-12-30 21:34:33
    在这个系统中我们设计了两个数据库表即基本信息库和数据中心库,用户一开始进入日记本系统为了其安全性就要对用户进行身份验证。因而就要对基本信息库进行调用并查询,而修密就要对该数据库进行修改。 在基本...
  • 易学C++,C++入门

    2009-12-06 14:30:11
     18.4.2 能读取判断末尾的eof   18.4.3 能计数的gcount   18.4.4 能设置域宽的width   18.5 插入操作符的重载   18.5.1 插入操作符   18.5.2 插入操作符的常用重载方式   18.6 方法指导   ...
  • DOS程序运行都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码0、1。 10.for 命令 for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。 在批处理文件中使用 FOR 命令...
  • 餐厅管理信息系统课程设计

    热门讨论 2011-06-21 21:52:55
    #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF","adoEOF") 用_ConnectionPtr指针连接数据库:在CmenuManageSysApp类的BOOL InitInstance()函数中加入以下代码: m_...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

当eof为真时