ファイルシステムのファイルまたはディレクトリをコピーします。
from: コピー元のファイルまたはディレクトリの場所を指定する
Url。
to: ファイルのコピー先の場所を指定する Url。
error-if-exists?: ファイルがすでに
to に存在する場合に例外がスローされるかどうかを示すフラグで、以下のようになります。
- true (既定値) に設定すると、ファイルが to にすでに存在する場合は IOException がスローされます。
- false に設定すると、to のファイルが自動的に上書きされます。
to で指定されたオブジェクトが
Directory である場合、
error-if-exists? の値に関係なく例外がスローされます。
recurse?: ディレクトリの内容をコピーするかどうかを示すフラグで、以下のようになります。
- true に設定すると、ディレクトリとサブディレクトリの内容がコピーされます。
- false に設定すると、to にディレクトリが指定された場合は IOException がスローされます。
注意事項
このプロシージャはアトミックではありません。
error-if-exists? = false を指定してもこのプロシージャが
ExistingFileException をスローしないとは限りません。たとえば、別のプロセスがタイミング悪くファイルシステムに
to で指定したオブジェクトを作成した場合などにはエラーがスローされます。
また
error-if-exists? = false の場合は、
to が
from で置き換えられずに削除される可能性もあります。このような状況は、たとえば、別のプロセスが
from 、
from.parent-dir 、または
to.parent-dir に対するファイルシステムの保護設定をタイミング悪く変更しているときに起こる可能性があります。
この問題は、
from ディレクトリを読み取る場合も該当します。
from に含まれるファイルを部分的に
to にコピーできますが、その後に障害(不適当なファイルシステム保護設定などが原因)が検出されると、
to 内のコピーが不完全なまま残される場合があります。