1

D3 に foo というファイルがあり、そのファイルの内容を /var/tmp/bar に書き出すとします。ドキュメントを読むと、D ポインターを Q ポインターに変更することで、D3 がファイル システムにファイルを書き込むことができるようになるはずですが、これを実現する方法がわかりません。

4

1 に答える 1

1

少なくともいくつかの方法でこれを行うことができます。

1) d ポインターを q ポインターに変更したくない場合は、q ポインターを作成するだけです。つまり、ホスト ファイル システムにアクセスするために最初に d ポインタを用意する必要はありません。したがって、「バー」と呼ばれるqポインターは次のようになります。

Q
/var/tmp/bar

これにより、次のことが簡単にできます。

copy foo
to: (bar

この場合、「bar」はファイルではなく、ホスト OS のフォルダー/ディレクトリであることに注意してください。D3「ファイル」は、複数のレコードを持つテーブルです。これは、複数のファイルを含むホスト OS ディレクトリに変換されます。

レコードがコピーされるときに項目 ID (キー) の表示を抑制するためのオプションが Copy コマンドで使用できます (ドキュメントを参照)。

2) q-pointerさえ必要ありません:

copy foo
to: (/var/tmp/bar

3) 同様に、コードでは q-pointer を使用するか、ダイレクト パスを使用できます。

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

==

パス構文は、OSFI と呼ばれるメカニズムを使用しています (ドキュメントを参照)。この構文を使用して、ドライバーを指定できます。「unix:」と呼ばれるデフォルトのドライバーは、属性マークを改行 x0A である *nix EOL に変換します。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 に答える