在 IO::CatHandle 中§
有关方法 eof,请参阅上下文中的主要文档
method eof(IO::CatHandle: --> Bool)
如果读取操作已耗尽源句柄队列(包括最后一个句柄的内容),则返回 True
。注意:调用此方法可能会导致一个或多个 .on-switch
调用,同时检查源句柄队列,并且 源句柄队列可能会被耗尽。
(my = 'foo'.IO).spurt: 'foo';(my = 'bar'.IO).spurt: 'bar';with IO::CatHandle.new: :on-switch, ,
适用于 IO::Handle.eof 的关于不可查找句柄和空文件的相同注意事项也适用于此处。
在 IO::Handle 中§
请参阅上下文中的主要文档,了解eof 方法
method eof(IO::Handle: --> Bool)
非阻塞。如果读取操作已读取完句柄的内容,则返回 True
。对于可查找的句柄,这意味着当前位置位于文件末尾或超出文件末尾,并且查找已读取完的句柄回到文件内容中将导致eof再次返回 False
。
在不可查找的句柄和打开到零大小文件(包括 /proc/
中的特殊文件)的句柄上,在读取操作无法读取任何字节之前,不会设置 EOF。例如,在此代码中,第一个 read
会消耗所有数据,但只有在第二个 read
未读取任何内容时,才会设置 TTY 句柄上的 EOF
$ echo "x" | raku -e 'with $*IN { .read: 10000; .eof.say; .read: 10; .eof.say }'
False
True