簡體   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