首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用CL实现`tai`命令?

如何使用CL实现`tai`命令?
EN

Stack Overflow用户
提问于 2012-03-28 13:37:55
回答 1查看 329关注 0票数 4

"with-open- file“将从文件的开头开始读取。如果文件非常大,如何有效地读取最后20行?

真心的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-29 00:28:19

这将打开一个文件,读取最后一个字节,然后关闭该文件。

代码语言:javascript
复制
(defun read-final-byte (filename)
  (with-open-file (s filename
                     :direction :input
                     :if-does-not-exist :error)
    (let ((len (file-length s)))
      (file-position s (1- len))  ; 0-based position.
      (read-char s nil))))        ; don't error if reading the end of the file.

如果您想专门读取最后的n行,则必须回读不确定的字节数,直到获得n+1换行符。为了做到这一点,你要么必须向后读块(速度更快,但最终会读取不需要的字节),要么字节读(速度较慢,但允许精度和稍微更明显的算法)。

我怀疑tail有一个合理的算法应用于此,因此很可能值得阅读tailsource来获得指导。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9901700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档