Smalltalk Pharo中的FileDirectory和ReferenceStream类等价物?

Smalltalk Pharo中的FileDirectory和ReferenceStream类等价物?,smalltalk,pharo,seaside,Smalltalk,Pharo,Seaside,我正在做持久性示例: 它涉及创建一个使用FileDirectory类的方法,如下所示: SMFileDatabase class>>backupDirectory ^ (FileDirectory default directoryNamed: self name) assureExistence. self name asFileReference ensureCreateDirectory. Pharo似乎无法找到该类,搜索中出现的最接近的类是FileDirecto

我正在做持久性示例:

它涉及创建一个使用FileDirectory类的方法,如下所示:

SMFileDatabase class>>backupDirectory
    ^ (FileDirectory default directoryNamed: self name) assureExistence.
self name asFileReference ensureCreateDirectory.
Pharo似乎无法找到该类,搜索中出现的最接近的类是FileDirectoryWrapper。这样行吗

注意。我自己也弄不明白,因为我以前从未使用过FileDirectory或FileDirectoryWrapper,所以我一无所知

以后编辑:

找到另一个引用流。他们两人似乎都被弃用了。 这里提到:

因为他们显然有问题,这里提到:

稍后编辑2:

下面的答案似乎适用于FileDirectory,在较新的Pharo版本中,ReferenceStream可以被Fuel取代。

SmartRefStrem似乎是解决这些错误的另一个解决方案。这一切都没有经过我的检验。

但是:

想要完成本书中的示例,需要回到过去,从以下网站获得Pharo 1.4:

向下滚动并查找一键式Pharo1.4,如果有比以下版本更新的版本,则获取最新版本:

1.3

我从这里幸运地得到了一个Pharo虚拟机:

通过在Pharo 1.3上运行的预构建海滨图像:


通过Monticello将代码从当前图像中取出,然后“返回”到旧图像中。成功

Pharo在这本书出版后的一段时间切换到了
文件系统

第一个代码的等价项是

SMFileDatabase class>>backupDirectory
    ^(FileSystem disk workingDirectory / self name) ensureCreateDirectory

(同样,关于
ReferenceStream
,Damien在您引用的帖子中给出的答案仍然正确)

最简单的方法如下:

SMFileDatabase class>>backupDirectory
    ^ (FileDirectory default directoryNamed: self name) assureExistence.
self name asFileReference ensureCreateDirectory.

你的意思是使用燃料而不是参考流。我也这么认为,但我宁愿完成这一切,然后开始黑客攻击。通过Monticello将我的代码导出,然后返回到Pharo VM 2.0,在Pharo 1.3中运行一个预构建的Seaside 3.0.7映像,从而使其正常工作。现在,书中的代码没有任何修改就可以正常工作了。非常简单。将问题编辑为包含整个故事。当我开始破解并使其在新版本上运行时,我将测试您的答案。注意:由于Monticello最初使用的是
DataStream
/
SmartRefStream
,并且Pharo支持Monticello/MCZs,因此必须有兼容性。事实上,
MCDataStream
似乎至少提供了
SmartRefStream
功能的一个子集。我将在示例中测试后再与您联系。祝你好运。