Rascal MPL 中跨 Windows 和基于 Unix 的文件系统处理目录的最佳方法是什么,以便 Rascal 项目的用户可以在这些操作系统中正确读取和生成文件?
视情况而定。
home:///
或 tmp:///
或 project://<name>
,或使用 IO::findResources
。
+
到达子级:path + "myFile.rsc"
将负责正确的转义、编码并添加路径分隔符 /
myPath.ls
获取文件夹中的条目列表。此外,在 util::FileSystem
中,还有更多可在任何位置进行的操作,以获取文件系统的概述。remove
,lastModidied
等等|file:///C:Program%20Files/|
模型中将 M3
作为文字。在这种情况下,所有下游分析都将正常工作,但跳转到代码将无法正常工作(因为 Mac 上的代码没有该文件夹)。
clair
这样的一些库来说,这不起作用。他们总是产生 file:///
URI。IO::relativize
在这里是基本的。如果合适的话,它将通过删除给定的前缀来为您提供后缀唯一的路径名。所以 relativize(|file:///C:Program%20Files|, |file:///C:Program%20Files/Hello.txt|)
产生 relative:///Hello.txt
。然后你可以将相对路径添加到新路径中:newPath + relative.path
。这种转换在模型大小上是线性的,可能需要几秒钟!通常,您会 visit { case loc l => ...}
在几行代码中编写必要的所有位置。|file:///C:Program%20Files/Hello.txt|
,将其发送到 Windows 计算机,当 writeFile
使用时,它会产生所需的效果。简而言之: