1

在 D3 中,假设我有一个名为 foo 的文件,我想将文件的内容写入 /var/tmp/bar。该文档使我相信应该可以通过将 D 指针更改为 Q 指针来使 D3 将文件写入文件系统,但我不知道如何实现这一点。

4

1 回答 1

1

您至少可以通过几种方式做到这一点。

1)您不想将 d-pointer 更改为 q-pointer,您只想创建一个 q-pointer。换句话说,没有必要先有一个 d-pointer 来访问主机文件系统。所以你的名为“bar”的 q 指针将如下所示:

Q
/var/tmp/bar

有了它,您可以简单地:

copy foo
to: (bar

请注意,在这种情况下,“bar”是主机操作系统文件夹/目录,而不是文件。D3“文件”是具有多条记录的表。这将转换为具有多个文件的主机操作系统目录。

复制命令上的选项可用于在复制记录时禁止显示项目 ID(键)(请参阅文档)。

2)你甚至不需要一个 q 指针:

copy foo
to: (/var/tmp/bar

3) 同样在代码中你可以使用 q-pointer 或者你可以使用直接路径:

open 'bar' to f.bar1 ...
open '/var/tmp/bar' to f.bar2 ...

==

路径语法使用一种称为 OSFI 的机制(请参阅文档)。使用此语法,您可以指定驱动程序。名为“unix:”的默认驱动程序将属性标记转换为 *nix EOL,它是一个换行符 x0A。如果您使用的是 Windows,则默认值为“dos:”,它将属性标记转换为 CRLF x0D0A。您可以通过在驱动程序前面加上路径来强制使用非默认值。因此,要在 Unix/Linux 中创建 DOS 格式的文件,请使用 dos:/var/tmp/bar。默认驱动程序还可以在制表符和 4 个空格之间进行转换(请参阅文档)。值和子值不会被转换,但可以创建一个新的驱动程序来执行此操作。使用 'bin:' 驱动程序来避免转换,因此 bin:/var/tmp/bar 不会将 @am (xFE) 转换为 x0A 等。

如果您需要更多详细信息,我很乐意添加。

于 2014-06-05T17:56:21.617 回答