Ruby目录是如何工作的?
Ruby目录是如何工作的?,ruby,io,stream,directory,Ruby,Io,Stream,Directory,目录-s与文件-s相比显得笨拙。许多方法类似于IO方法,但是Dir不是从IO继承的。例如,IO文档中的tell内容如下: 返回ios的当前偏移量(以字节为单位) 当通过正常的目录读取-ing和告诉-ing时,我会得到像346723732和422823816这样的大数字。我原本希望这些整数更像“数组”,只是一个简单的范围 这些是目录中包含的文件字节吗 如果没有,返回的数字如IO#tell是否有任何意义 另外,如果Dir-s不是流,为什么它们有open和close功能 关闭Dir是否与关闭正常IO
目录
-s与文件
-s相比显得笨拙。许多方法类似于IO
方法,但是Dir
不是从IO
继承的。例如,IO
文档中的tell
内容如下:
返回ios的当前偏移量(以字节为单位)
当通过正常的目录读取-ing和告诉-ing时,我会得到像346723732
和422823816
这样的大数字。我原本希望这些整数更像“数组”,只是一个简单的范围
- 这些是
目录中包含的文件字节吗
- 如果没有,返回的数字如
IO#tell
是否有任何意义
- 另外,如果
Dir
-s不是流,为什么它们有open
和close
功能
- 关闭
Dir
是否与关闭正常IO
一样重要
任何关于RubyDir
如何工作的一般性解释都将不胜感激
更新另一个令人困惑的部分:如果Dir
s不是IO
s,为什么会引发IOerror
关闭目录流。任何进一步访问目录的尝试都将引发IOError
还请注意,在文档中,它将其视为“目录流”。因此,这再次提出了一个问题,即它们是流还是非流,如果不是,为什么要使用命名约定?Dir的文档告诉我们:
Returns the current position in dir.
没有指定位置的含义。返回值表示的内容可能会根据您使用的操作系统以及包含目录的文件系统的类型而有所不同。该值应被视为不透明,不要试图以任何方式解释它。它的唯一用途是能够将该值发送回操作系统,例如通过调用Dir\seek
目录不仅仅是一个巨大的文件。更典型的是,它们只是从文件名映射到有关文件数据所在位置的信息
你不应该(据我所知,你不能)自己写目录。目录的文档告诉我:
Returns the current position in dir.
没有指定位置的含义。返回值表示的内容可能会根据您使用的操作系统以及包含目录的文件系统的类型而有所不同。该值应被视为不透明,不要试图以任何方式解释它。它的唯一用途是能够将该值发送回操作系统,例如通过调用Dir\seek
目录不仅仅是一个巨大的文件。更典型的是,它们只是从文件名映射到有关文件数据所在位置的信息
你不应该(据我所知,你不能)自己写目录。所以在一些IRC聊天之后,我得出了以下结论:
Dir
对象不是IO
Dir
不从IO类继承,只可读。仍然不确定在#close
上引发IOError
的原因
然而,打开的Dir
是一个流
类Dir的对象是表示底层文件系统中的目录的目录流
另外,如果您检查是否有Dir#close
,您将看到它调用了C函数dirclose
<代码>手动关闭
打印:
closedir()
函数关闭与关联的目录流
dirp
。成功调用closedir()
也会关闭基础文件
与dirp
关联的描述符。目录流描述符dirp
此呼叫后不可用
…使用dirp
作为参数
因此,是的,实例化的Dir
s将打开一个流,是的,Dir
s将使用一个文件描述符,如果您不想依赖垃圾收集,则需要关闭它
非常感谢injekt和《红宝石郎》irc上的其他人 在一些IRC聊天之后,我得出了以下结论:
Dir
对象不是IO
Dir
不从IO类继承,只可读。仍然不确定在#close
上引发IOError
的原因
然而,打开的Dir
是一个流
类Dir的对象是表示底层文件系统中的目录的目录流
另外,如果您检查是否有Dir#close
,您将看到它调用了C函数dirclose
<代码>手动关闭
打印:
closedir()
函数关闭与关联的目录流
dirp
。成功调用closedir()
也会关闭基础文件
与dirp
关联的描述符。目录流描述符dirp
此呼叫后不可用
…使用dirp
作为参数
因此,是的,实例化的Dir
s将打开一个流,是的,Dir
s将使用一个文件描述符,如果您不想依赖垃圾收集,则需要关闭它
非常感谢injekt和《红宝石郎》irc上的其他人 谁Dir
不是从IO
继承的。目录不是IO
对象,它是指向文件的指针的组织结构。这与我的错误无关。我看到了类似的术语,并假设它发生了。只要看一下这些文件,它应该会让一切都很清楚:@Casper我已经更新了我的问题。@Casper和我一直在阅读这些文件,我来这里的唯一原因是我觉得解释得不够好。是谁Dir
不是从IO
继承的。目录不是IO