ファイルまたはディレクトリを移動するか、名前を変更します。
from: 名前を変更するファイルまたはディレクトリを識別する
Url。
to: ファイルまたはディレクトリの新しい名前を識別する Url。
error-if-exists?: ファイルがすでに
to に存在する場合に例外がスローされるかどうかを示すフラグで、以下のようになります。
- true (既定値) に設定すると、ファイルが to にすでに存在する場合は IOException がスローされます。
- false に設定すると、to のファイルが自動的に上書きされます。
to で指定されたオブジェクトが
Directory である場合、このパラメータの値に関係なく例外がスローされます。
説明
このプロシージャは、from で指定されたファイルまたはディレクトリのファイル名を to で指定された名前に変更します。to のステム パスが from と異なる場合、ファイルまたはディレクトリは to で指定されたパスに指定された名前で移動されます。
注意事項
一般に、このプロシージャはアトミックではありません (Curl RTE の他のインスタンスを含め、ファイルシステムの他のクライアントから見た場合)。ただし、Win95、Win98、WinME を除くローカル ファイルシステム内のファイルの名前を変更する場合、このプロシージャはアトミックです。Win95、Win98、WinME を除くローカル ファイルシステム内のファイルの名前を変更する場合は、以下のようになります。
- to が既存のファイルで、error-if-exists? = false の場合、to はアトミックに交換されるため、to に別のプロセスがアクセスしたときに見つからないということはありません。
- to が存在してもこの操作が何らかの理由で失敗した場合、このプロシージャでは必ず to のインスタンスを残します。つまり、この操作が成功または失敗にかかわらず完了した後は、to はファイルシステムに存在するオブジェクトを参照することになります。この操作に成功した場合は、to はこの操作の開始前に from が参照していたオブジェクトを参照します。この操作に失敗した場合、to はこの操作の開始前にそれ自体が参照していたオブジェクトか、または from が参照していたオブジェクトを参照します。
- ただし、上書きするときに from と to の両方が名前を変更されるオブジェクトを参照している可能性はあります。
from がシンボリック リンクを参照する場合、そのリンクは名前が変更されます。
to がシンボリック リンクを参照する場合、そのリンクは上書きされます。
error-if-exists? = false を指定してもこのプロシージャが
ExistingFileException をスローしないとは限りません。たとえば、別のプロセスがタイミング悪く
to で指定されたオブジェクトを作成した場合などにはエラーがスローされます。
また、
error-if-exists? = false の場合は、
to が
from で置き換えられずに削除される可能性もあります。このような状況は、たとえば、別のプロセスが
from、
from.parent-dir、または
to.parent-dir に対してファイルシステムの保護設定をタイミング悪く変更しているときに起こる可能性があります。