繁体   English   中英

如何从文件中的当前位置查找负数?

[英]How to seek negative off the current position in file?

我试图从红宝石的当前位置向后寻找2个字节。 下面的代码尝试查找行的上一行。

    1.9.3-p448 :003 > while file.getc != '\n'
    1.9.3-p448 :004?>   file.seek(-2,IO::SEEK_CUR)
    1.9.3-p448 :005?>   end
    Errno::EINVAL: Invalid argument - test
    from (irb):4:in `seek'
    from (irb):4
    from /usr/local/rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'

我无法理解为什么出现此错误。 它寻求完美的外部循环(同一条语句)。 测试是文件名。

我猜您的问题是您还没有到文件中两个字节。 我只是用一个简单的文本文件来完成的:

>> fp = File.new('pancakes.txt', 'r')
>> fp.readline
>> fp.seek(-2, IO::SEEK_CUR)
=> 0
>> fp.seek(-20, IO::SEEK_CUR)
Errno::EINVAL: Invalid argument - x.txt

文件的第一行只有几个字符,因此-20会尝试将我放在文件开头之前。

我认为您只需要对pos检查:如果file.pos == 0那么您就处于起步阶段,否定搜索将引发异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM