Pharo 中的 FileDirectory 和 ReferenceStream Class 等价物?

FileDirectory and ReferenceStream Class equivalents in Pharo?

我正在做持久性示例:

http://book.seaside.st/book/advanced/persistency/image-based-persistency

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

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

Pharo 似乎无法找到 Class,搜索中最接近的是 FileDirectoryWrapper。这样可以吗?

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

稍后编辑:

找到另一个ReferenceStream。他们似乎都被弃用了。 这里提到: http://lists.gforge.inria.fr/pipermail/pharo-project/2012-June/065765.html

因为他们显然有问题,所以在这里提到: Smalltalk ReferenceStream has problems with new instance variables?

稍后编辑2:

似乎下面的答案适用于 FileDirectory,并且 ReferenceStream 可以在较新的 Pharo 版本中由 Fuel 替换。

SmartRefStrem 似乎是解决错误的另一种方法。所有这些都未经我测试。 Smalltalk ReferenceStream has problems with new instance variables?

然而:

那些想要完成书中示例的人需要回到过去并从以下位置获得 Pharo 1.4: https://gforge.inria.fr/frs/?group_id=1299

向下滚动并查找 One-Click Pharo 1.4 并获取最新版本,如果有更新的版本: https://gforge.inria.fr/frs/download.php/file/31359/Pharo-1.4-14457-OneClick.zip

1.3.

我幸运地从这里获得了 Pharo VM: http://files.pharo.org/vm/pharo/20/mac/stable.zip

在此处使用 Pharo 1.3 上的预构建 Seaside 图像 运行: http://www.seaside.st/distributions/Seaside-3.0.7-final.zip

通过 Monticello 从当前映像中获取代码,然后 "back" 将代码放入旧映像中。成功!

Pharo 在本书出版一段时间后切换到 FileSystem

第一个代码的等价物现在是

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

(另外,关于 ReferenceStream,Damien 在您引用的 post 中给出的答案仍然适用)

最简单的方法是这样的:

self name asFileReference ensureCreateDirectory.