【发布时间】:2012-11-29 12:25:20
【问题描述】:
Dir-s 与File-s 相比显得有些尴尬。许多方法类似于IO 方法,但Dir 不继承自IO。例如,IO 文档中的 tell 内容如下:
返回 ios 的当前偏移量(以字节为单位)。
当 read-ing 和 tell-ing 通过普通的 Dir 时,我会得到像 346723732 和 422823816 这样的大数字。我原本希望这些整数更像“数组”,只是一个简单的范围。
- 这些是
Dir中包含的文件的字节吗? - 如果不是,像
IO#tell这样返回的数字有什么意义吗? - 如果
Dir-s 不是Streams,为什么还要有open和close函数? - 关闭
Dir是否仍与关闭普通IO一样重要?
任何关于 Ruby Dir 工作原理的一般解释将不胜感激。
更新另一个令人困惑的部分:如果Dirs 不是IOs,为什么close 会引发IOerror?
关闭目录流。任何进一步尝试访问 dir 都会引发 IOError。
还要注意,在文档中它认为它是一个“目录流”。所以这又提出了一个问题,它们是否流式传输,如果不是,为什么要使用命名约定?
【问题讨论】:
-
谁?
Dir不是从IO继承的。目录不是IO对象,它是指向文件的指针的组织结构。与IO无关。 -
@Casper 我的错。我看到了类似的术语并假设。
-
它发生了。只需查看文档,它应该让一切都非常清楚:ruby-doc.org/core-1.9.3/Dir.html#method-i-seek 和 ruby-doc.org/core-1.9.3/Dir.html#method-i-tell
-
@Casper 我已经更新了我的问题。
-
@Casper 和我一直在阅读文档,我在这里的唯一原因是因为我觉得解释得不够好。